Tag: 空值检查

比较一个generics与空值可能是一个值或引用types?

public void DoFoo<T>(T foo) where T : ISomeInterface<T> { //possible compare of value type with 'null'. if (foo == null) throw new ArgumentNullException("foo"); } 我故意只检查null,因为我不想限制ValueType等于它的default(T) 。 我的代码编译和工作就这么好(ReSharper抱怨,但不是CodeAnalysis)。 虽然我想知道: 有没有更为标准的方法来处理这种情况? 有没有可能由此产生问题? 当我拨打电话并通过值types时,真正发生了什么?