在 C# 中从泛型方法返回 Null 值
在 C# 泛型方法中,当类型参数可以是引用类型或值类型时,返回 null 并不总是那么简单。当返回类型为类型参数 T 时,就会出现此问题。
考虑以下代码片段:
<code class="language-csharp">static T FindThing<T>(IList collection, int id) where T : IThing, new() { foreach (T thing in collection) { if (thing.Id == id) return thing; } return null; // 错误:无法将 null 转换为类型参数“T”,因为它可能是值类型。请考虑改用“default(T)”代替。 }</code>
这段代码尝试在集合中找不到匹配元素时返回 null,但会发生构建错误。错误消息指出,由于 T 可能是值类型,因此无法将 null 转换为类型参数 T。
有三种方法可以解决此问题:
返回默认值:您可以使用 default(T)
返回类型 T 的默认值。这将为引用类型返回 null,并为值类型返回适当的默认值,例如 int 为 0,char 为 '
以上是如何从具有类型参数 T 的 C# 泛型方法安全地返回 Null?的详细内容。更多信息请关注PHP中文网其他相关文章!