如何从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),这意味着您将返回nullT是否0int'\0'for char等的引用类型(或可为空的值类型)(默认值表(C#参考))
  • 将T限制为具有where T : class约束的引用类型,然后null正常返回

以上是 如何从C#中的通用方法返回NULL? 的全部内容, 来源链接: utcz.com/qa/423581.html

回到顶部