为什么“as”不适用于Value类型而“is”呢?

时间:2011-02-02 10:01:08

标签: c#

'as'运算符不适用于值类型,而'是'。为什么呢?

3 个答案:

答案 0 :(得分:7)

因为如果类型不匹配,as运算符会返回null,并且值类型不能保存null值。

例如

double d = myVariable as double;

如果myVariable不是double,则d将为null,而这不是double的适当值。

答案 1 :(得分:3)

答案 2 :(得分:0)

as与投射不同(优秀解释hereas永远不会改变对象本身的表示,它只会改变引用的类型,而如果需要,转换将改变对象本身的类型。

int? i = 3;
double? d = (double?)i;

是有效的(和工作)c#代码,而

int? i = 3;
double? d = i as double?;

错误“无法转换类型'int?' '加倍?'通过引用转换,装箱转换,拆箱转换,换行转换或空类型转换“