我如何从C#中的泛型方法返回NULL?
我有一个这个(虚拟)代码的通用方法(是的,我知道IList有谓词,但我的代码不使用IList,但其他一些集合,无论如何,这是不相关的问题...)
static T FindThing<T>(IList collection, int id) where T : IThing, new()
{
foreach T thing in collecion
{
if (thing.Id == id)
return thing;
}
return null; // ERROR: Cannot convert null to type parameter 'T' because it could be a value type. Consider using 'default(T)' instead.
}
这给我一个构建错误
“无法将null转换为类型参数'T',因为它可能是一个值类型,请考虑使用'default(T)'。”
我可以避免这个错误吗?
两种选择:
default(T)
,这意味着如果T是引用类型(或可为空值类型),则返回null
,对于int为0,对于char等为' 0' where T : class
约束的引用类型,然后正常返回null return default(T);
你可以调整你的约束:
where T : class, IDisposable
然后返回null是允许的。
链接地址: http://www.djcxy.com/p/35359.html