繁体   English   中英

通用方法返回nullReferenceException

[英]Generic method returns nullReferenceException

我有这个泛型方法,总是返回nullReferenceException。 我已经删除了所有不必要的代码,但仍然给我例外。

    public T RetrieveInformationFromApi<T>(int Id) where T : IMovie
    {
        T result = default(T);

        result.Title = "test";
     }

可以用三个不同的类调用该方法,这三个类都具有标题属性,并且都实现IMovie接口,但是该方法仍然给我一个例外。 我究竟做错了什么?

您应该在T参数上添加构造函数约束,以便可以创建新实例。

public T RetrieveInformationFromApi<T>(int Id) where T : IMovie, new()
{
    T result = new T();

    result.Title = "test";
}

您正在使用default ,该default null对引用类型返回null (而我猜您正在使用引用类型。

MSDN

给定参数化类型T的变量t,语句t = null仅在T是引用类型且t = 0仅适用于数值类型而不适用于结构的情况下才有效。 解决方案是使用默认关键字,对于引用类型,该关键字将返回null,对于数值类型,将返回零。

我不确定您要实现的目标,但是通过这种方式,您总是会遇到引用类型的异常。

T是引用类型(类)时, default (T)返回null,因为它是所有引用类型的默认值。

然后显然尝试访问其属性会导致NullReferenceException

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM