泛型类

时间:2016-11-09 11:12:53

标签: c# .net generics

我有一个这样的课程:

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)

我该怎么办?

1 个答案:

答案 0 :(得分:3)

对于nullint等值类型,

double是无效值。因此,您必须将泛型类型参数限制为类,如下所示:

public class MyList<T> : List<T> where T : class

然后,编译器错误将消失。