-1
我完全了解为什么as
不能用于值类型。不过,我知道的唯一的更换:有值类型的'as'替代吗?
if (!(obj is MyValueType)) { // Type check #1
// Exception or whatnot
}
var myValueType = (MyValueType)obj; // Type check #2
然而,这个代码不类型检查具有性能成本的两倍,同样的成本as
来解决引用类型。
我的问题:值类型是否有更好的高性能机制/语法?
我能想到的唯一的单一类型检查机制是try/catch
,但这当然会有其自身的性能成本,并且我尽量避免基于异常的编程。
不,它不是.. –
'此代码执行两次类型检查,其性能成本,'为什么不省略第一次检查,并让它在类型不正确时抛出'InvalidCastException'? – 2016-01-13 11:20:18
@Kilanny作者不想使用try catch基于异常的编程。 –