首页 / 问答 / [C#/.NET]C#&.NET/.NET Core应用程序的泛型方法如何返回可空的null值呢?

[C#/.NET]C#&.NET/.NET Core应用程序的泛型方法如何返回可空的null值呢?

.NET C# 泛型 .NET Core 1.56K 次浏览
0

在C#&.NET的应用程序开发中,有一个通用的方法返回一个泛型的对象,现需要在某些情况下这个泛型方法的返回值是null,以下是代码片段:

public interface IThing
{
    public int Id { get; set; }
}
public class Program
{
    static void Main()
    {
        Console.ReadKey();
    }

    static T FindThing<T>(IList collection, int id) where T : IThing
    {
        foreach (T thing in collection)
        {
            if (thing.Id == id)
                return thing;
        }
        return null;
    }
}

编译器报错:

CS0403    无法将 null 转换为类型参数“T”,因为它可能是不可为 null 的值类型。请考虑改用“default(T)”。

C#&.NET应用程序中,应该如何在泛型方法中返回可空的null值呢?

回复 [×]
提交评论
请输入评论内容

2 个回答

  • 0

    根据编译器的提示,可以在需要返回null的时候用default(T)来代替,如:

    Rector的个人主页

    Rector

    2021-11-08 回答

    • 0

      或者给泛型类型添加类型限定,然后就可以直接返回null值,如下:

      Rector的个人主页

      Rector

      2021-11-08 回答

      我来回答