我有点好奇知道使用 as
关键字, Casting 或使用 Convert.To_______()
<之间的区别/ em>功能。
我经过一些搜索后发现 as
运算符只执行引用转换和装箱转换。还有什么其他差异。
我还注意到 as
关键字很少使用,为什么会这样。它们中的任何一个是否具有优于其他的性能优势,或者它们只是框架中的冗余。
答案 0 :(得分:6)
(强制转换)语法非常重载,可以执行:
“as”执行这些
的子集但这里的重要特征是它兼作类型关系的无异常测试 - 比使用异常或使用反射进行测试更有效。特别是,例如:
// 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确定要投射的对象将被投射,请使用转换,
如果不使用。