【发布时间】:2011-08-10 13:22:59
【问题描述】:
警告:此代码很烂,请参阅 ANTHONY 的评论
哪个更快?
1.
public bool IsValueType<T>(T obj){
return obj is ValueType;
}
2.
public bool IsValueType<T>(T obj){
return obj == null ? false : obj.GetType().IsValueType;
}
3.
public bool IsValueType<T>(T obj){
return default(T) != null;
}
4.别的东西
【问题讨论】:
-
性能真的很重要吗,因为它真的是微优化
-
所写的方法 2 和 3 无效。
obj == null ||将为引用类型返回 true。default(T) != null将为Nullable<T>结构返回 false。 -
您对方法 2 的编辑仍然无效。
obj != null ||将为非空引用类型的对象返回 true。 -
由于我过于挑剔,呃,我的意思是有帮助,方法 1 不喜欢空的
Nullable<T>对象。int? bar = null;将其传递给函数,你会得到错误的。 (说实话,没想到会这样。) -
方法 2 最新编辑。
return obj == null ? false : ...仍然给Nullable<T>带来问题。
标签: c# .net performance value-type