我有这样一个通用的方法:不能从泛型方法返回'null'?
public T GetLevelElement<T>(string name) where T : ILevelElement
{
//[...]
}
在DB这基本上执行查找,并在某些情况下,它不会(也不能返回)的结果,我想返回null。
但是,这显然是不可能的,因为'在T和空之间没有隐式转换'。在这种情况下我该怎么办?
我有这样一个通用的方法:不能从泛型方法返回'null'?
public T GetLevelElement<T>(string name) where T : ILevelElement
{
//[...]
}
在DB这基本上执行查找,并在某些情况下,它不会(也不能返回)的结果,我想返回null。
但是,这显然是不可能的,因为'在T和空之间没有隐式转换'。在这种情况下我该怎么办?
T不能为空,因为T可能是一个值类型。尝试返回缺省值(T)或添加类约束,以指示T能够仅是像这样的引用类型:
public T GetLevelElement<T>(string name) where T : ILevelElement, class
{
[...]
}
达斯汀坎贝尔是正确的。另一种解决方案是返回default(T)
。
哦。我没有看到他已经告诉过你关于默认关键字的信息。忽略我的答案。 – 2013-11-21 17:55:44
至少在.NET 3.5中,上面应该是'... where T:class,ILevelElement'。编译器扼流圈因为它希望'class'关键字是第一个。 – 2011-02-21 15:30:10