有过载Convert.ToInt32
的是采用Int32
作为参数。但是,即使文档说基本没有任何反应,该方法返回其输入。
问题是为什么我们会有这样的超载?有什么目的吗?谁能给我一个使用这种方法的例子吗?
我的想法:我认为我们可能拥有它,因为有一个超载会占用Object。因此,我们要消除拳击等等。但是我不确定。
我的想法:
Convert.ToInt32(Int32)
可简化代码生成器,但不会影响运行时性能,因为调用可能会立即被JIT撤消代码生成(更多详细信息):在.NET 2.0时代生成代码的常用方法是System.CodeDOM,因为它提供了将同一代码生成器重用于多种语言的方法,最主要的是VB.NET和C#。在CodeDOM中,您无需知道给定表达式将调用哪种类型,您只需在目标对象表达式和方法名称上创建给定的CodeMethodCallExpression。另一方面,CodeDOM不支持许多强制转换运算符,例如C#作为运算符。
结果,通常很难知道CodeDOM中给定代码表达式的类型。这完全有意义,因为表达式可能涉及的许多方法也是所生成代码的一部分,因此在生成时是未知的。但是,在某些情况下,您需要将特定的表达式转换为给定的类型,例如System.Int32
。我可以想象这实际上是针对类型化数据集发生的,尽管我不确定100%。因为Convert.ToInt32
存在,所以生成器不需要知道给定表达式的类型System.Int32
。当编译器编译生成的代码时,所有方法签名均可用,并且编译器可能会发现表达式的类型为,System.Int32
并调用适当的重载。
另一方面,JIT编译器将检测到该方法Convert.ToInt32
将仅返回其参数。但是由于该方法不是虚拟的,因此可以将方法主体插入到调用者代码中,而不必进行调用,Convert.ToInt32
因为调用方法的开销将比方法主体高得多。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句