【问题标题】:difference between in-front type conversion and "as" conversion [duplicate]前端类型转换和“as”转换之间的区别[重复]
【发布时间】:2012-01-23 11:16:11
【问题描述】:

可能重复:
Casting: (NewType) vs. Object as NewType
Casting vs using the 'as' keyword in the CLR

这两种类型的转换有什么区别(正如我所见,它们并非一直都有效):

ClassA a = (ClassA)someClassObject;

ClassA a = someClassObject as ClassA

【问题讨论】:

    标签: .net


    【解决方案1】:

    每个http://msdn.microsoft.com/en-us/library/cscsdfbt%28v=vs.71%29.aspx(强调我的):

    as 运算符类似于强制转换 ,除了它在 转换失败而不是引发异常。更正式地,一个 形式的表达:

    expression as type
    

    相当于:

    expression is type ? (type)expression : (type)null
    

    除了该表达式只计算一次。

    【讨论】:

      【解决方案2】:

      在第一种情况下,如果转换不成功,将在运行时抛出 InvalidCastException。在第二种情况下,您将在结果变量中获得null

      【讨论】:

        【解决方案3】:

        第一个是强制转换 - 如果someClassObject 不能被强制转换,InvalidCastException 将被抛出。

        第二个不会抛出异常,但如果转换不成功,a 将是 null

        【讨论】:

          【解决方案4】:

          As 将返回 null 并且强制转换将从内存中出现异常

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-11-26
            • 2013-12-15
            • 1970-01-01
            • 2011-03-30
            • 2011-04-13
            • 2011-05-19
            相关资源
            最近更新 更多