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

She*_*Pro 3 .net c# casting type-conversion

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

经过一点点搜索,我发现as操作员只执行参考转换和装箱转换.还有什么其他差异.

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

Mar*_*ell 6

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

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

"as"执行这些的子集

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

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

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

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

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

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