'as'运算符不适用于值类型,而'是'。为什么呢?
答案 0 :(得分:7)
因为如果类型不匹配,as
运算符会返回null
,并且值类型不能保存null
值。
例如
double d = myVariable as double;
如果myVariable
不是double
,则d将为null
,而这不是double
的适当值。
答案 1 :(得分:3)
答案 2 :(得分:0)
as
与投射不同(优秀解释here)
as
永远不会改变对象本身的表示,它只会改变引用的类型,而如果需要,转换将改变对象本身的类型。
int? i = 3;
double? d = (double?)i;
是有效的(和工作)c#代码,而
int? i = 3;
double? d = i as double?;
错误“无法转换类型'int?' '加倍?'通过引用转换,装箱转换,拆箱转换,换行转换或空类型转换“