This question already has answers here:
Direct casting vs 'as' operator?
(17个答案)
Casting vs using the 'as' keyword in the CLR
(18个回答)
What is the difference between casting and using “as” in C#?
(8个答案)
6年前关闭。
假设有一个接口
要么:
我知道在失败的情况下,第一条语句将抛出
该代码等效于以下表达式,但表达式变量仅被评估一次。
请注意,as运算符仅执行参考转换,可为空的转换和装箱转换。 as运算符不能执行其他转换,例如用户定义的转换,而应使用强制转换表达式来执行。
参考:
as (C# Reference)
(17个答案)
Casting vs using the 'as' keyword in the CLR
(18个回答)
What is the difference between casting and using “as” in C#?
(8个答案)
6年前关闭。
假设有一个接口
A
和一个实现该接口的类的变量'x'。现在,我可以执行以下操作:var a = (A) x;
要么:
var a = x as A;
我知道在失败的情况下,第一条语句将抛出
InvalidCastException
,第二条语句将返回null
。但是还有其他区别吗?表现特别? 最佳答案
as运算符就像强制转换操作。但是,如果无法进行转换,则as返回null而不是引发异常。
您可以使用as运算符在兼容的引用类型或可为空的类型之间执行某些类型的转换。
考虑以下示例:
expression as type
该代码等效于以下表达式,但表达式变量仅被评估一次。
expression is type ? (type)expression : (type)null
请注意,as运算符仅执行参考转换,可为空的转换和装箱转换。 as运算符不能执行其他转换,例如用户定义的转换,而应使用强制转换表达式来执行。
参考:
as (C# Reference)