C# as关键字

来源:互联网 发布:mac连接云服务器文件 编辑:程序博客网 时间:2024/05/18 19:42

as 运算符用于执行可兼容类型之间的转换。

as 运算符类似于类型转换,所不同的是,当转换失败时,as 运算符将产生空,而不是引发异常。在形式上,这种形式的表达式:

expression as type

等效于:

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

只是 expression 只被计算一次。

请注意,as 运算符只执行引用转换和装箱转换。as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用 cast 表达式来代替其执行。

----------

所以这里的意思就是说,as运算符和括号类型转换的区别是,括号类型转换会在转换失败的时候抛出异常,而as不抛异常,只是返回一个null。所以在as之后的变量要判断是否为null。

既然C#已经有了括号的类型转换,为啥还加一个as呢?是多此一举吗?

引用一篇文章(C#中"is" vs "as")

如果用括号的话:

---------

if (cls1 is Class2)

{

Class2 cls2 = (Class2)cls1;

}

else

System.Console.WriteLine("Error 2!");

}

-------

这里判断了两次类型的转化,第一次是"is"的时候,第二次则是转换的时候。

而如果使用as的话:

-------

Class2 cls2 = cls1 as Class2;

if (cls2!=null)

System.Console.WriteLine("Ok");

else

System.Console.WriteLine("Error!");

-------

这里只有在as的时候类型检查了一次。

 

原创粉丝点击