[英]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.