繁体   English   中英

myData as string,(string)myData和Convert.ToString(myData)之间的差异

[英]Diference between myData as string, (string) myData and Convert.ToString(myData)

我有点好奇知道使用as关键字, Casting或使用Convert.To_______()函数有什么区别。

经过一点点搜索,我发现as运算符只执行引用转换和装箱转换。 还有什么其他差异。

我也注意到, as关键字很少使用,为什么会如此。 它们中的任何一个是否具有优于其他的性能优势,或者它们只是框架中的冗余。

(强制转换)语法非常重载,可以执行:

  • 装箱/拆箱
  • 参考保留类型转换
  • 在类型上定义的转换运算符
  • 内置的原始转换
  • Nullable-of-T包装/展开

“as”执行这些的子集

  • 参考保留类型转换
  • 一些有限的拳击可以为空的

但是这里的重要特征是它兼作类型关系的无异常测试 - 比使用异常或使用反射测试更有效。 特别是,例如:

// is it a list?
IList list = obj as IList
if(list != null) {
    // specific code for lists
}

如果你坚信一个物体某种东西,那么(演员)是首选,因为这可以作为你信仰的主张。 一个例外(在这种情况下)是可取的。

Convert方法处理不同的场景,包括字符串转换(否则可通过静态.Parse方法获得)

如果有的话,它是我最少使用的转换。 (强制转换)和“as”语法非常经常使用。

cast vs as:cast抛出异常,如果无法进行转换则返回null。 没有任何性能差异。

转换:完全不同。 您不能将数字转换为字符串,但您可以转换为。 阅读有关Convert类能够使用的文档。

如果您确定要投射的对象是%100,请使用Convert,

如果不使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM