我遇到这种情况:
public class FOO<T> where T : IBar
{
private T _xxx;
public Y(T xxx)
{
if (xxx == null) throw new ArgumentNullException("xxx");
_xxx = xxx;
}
}
public interface IBar
{
string XString { get; }
}
在构造函数中,我正在检查T
null
。编译器正确警告我,我正在检查可能是值类型的null
,因为IBar
可以由结构实现。
如何约束T
作为参考类型?
答案 0 :(得分:5)
典型的神话(即使我之前得到过)是从界面派生的类型是隐式引用类型,但实际上并非如此。 Struct 也可以有界面。
因此,您应该添加更多约束class
以指示为引用类型
public class FOO<T> where T : class, IBar