myData as string,(string)myData和Convert.ToString(myData)之间的区别

时间:2010-12-27 09:14:50

标签: c# .net casting type-conversion

我有点好奇知道使用 as 关键字, Casting 或使用 Convert.To_______() <之间的区别/ em>功能。

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

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

3 个答案:

答案 0 :(得分:6)

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

  • 装箱/拆箱
  • reference-preserving type casts
  • 在类型
  • 上定义的转换运算符
  • 内置原始转化
  • Nullable-of-T wrap / unwrapping

“as”执行这些

的子集
  • reference-preserving type casts
  • 一些有限的nullable-of-T
  • 拳击

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

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

如果您坚信某个对象 某事物,则首选(强制转换),因为这可以作为您信仰的主张。一个例外(在这种情况下)是可取的。

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

如果有的话,那就是我最少使用的转换。 (cast)和“as”语法经常使用。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

如果%100确定要投射的对象将被投射,请使用转换,

如果不使用。