我有一个这样的课程:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
public class MyList<T> : List<T>
{
public int SelectedIndex { get; set; }
public T CurrentItem
{
get
{
if (this.SelectedIndex > this.Count)
return null;
return this[this.SelectedIndex];
}
}
}
}
我正在创建一个从list派生的类,并创建一个用于获取当前项的属性。
如果SelectedIndex
的值不正确,我将返回null
,但它有错误
无法将null转换为类型参数&#39; T&#39;因为它可能是一个 不可为空的值类型。考虑使用&#39;默认(T)&#39;代替。
我希望返回值为null
而不是default(T)
。
我该怎么办?
答案 0 :(得分:3)
null
或int
等值类型, double
是无效值。因此,您必须将泛型类型参数限制为类,如下所示:
public class MyList<T> : List<T> where T : class
然后,编译器错误将消失。