演员之间有什么区别:(A)x和x是A?

这个问题在这里已经有了答案:

  • 直接投射vs'as'运营商? 15个答案
  • 在CLR中使用“as”关键字进行投射
  • 铸造和在C#中使用“as”有什么区别? 8个答案

  • as运算符就像一个演员操作。 但是,如果转换不可行,则返回null而不是引发异常。

    您可以使用as运算符在兼容的引用类型或可为空的类型之间执行某些类型的转换。

    考虑下面的例子:

    expression as type
    

    该代码等同于下面的表达式,只是表达式变量只被计算一次。

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

    请注意 ,as运算符仅执行参考转换,可空转换和装箱转换。 as运算符不能执行其他转换,例如用户定义的转换,而应该使用转换表达式来执行转换。

    请参阅:(C#参考)


    通过做(A)x你正在做一个明确地尝试和施放的演员,如果它不能施展,会有一个例外。

    如果您使用的as它要么投或为null

    但是,您有自己需要的所有示例代码以便自己尝试,以便在向我们询问您所陈述的代码将要执行的操作之前,您可以尝试使用此代码。


    第一个试图立即转换,第二个实际检查x是否是A型。

    链接地址: http://www.djcxy.com/p/73741.html

    上一篇: What is a difference between casts: (A) x and x as A?

    下一篇: C# cast options, is there any difference other than syntax?