【发布时间】:2011-10-25 19:27:10
【问题描述】:
我有一些通用方法
T SomeMethod(Func<T> func){
T result = func();
if (result != null)
{ //.....}
}
如果T 是类,则效果很好。但是如果T是struct我该怎么办?如果T 是struct,我如何检查result == default(T)?
附:我不想使用约束 where T: class 或 Nullable 类型。
【问题讨论】:
-
检查值类型是否等于默认值有什么用,这在逻辑上如何匹配
null的对象?如果刚刚构造了一个引用类型怎么办 - 那是等价的吗?我认为这不能笼统地回答,但必须根据您的情况逐案回答。 -
添加到@dlev
default(T) where T : class == null -
扩展我之前的评论,如果你只是想避免 NRE,那么 JaredPar 的回答告诉你,你可以简单地写
if(result != null)。