MSL MSL - 28 days ago 19
C# Question

Null value for generic class

I have a class like this:

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];
}
}
}
}


I am creating a class that derive from list and create a property for getting the current item.

If
SelectedIndex
is a wrong value, I am returning
null
but it has an error


Cannot convert null to type parameter 'T' because it could be a
non-nullable value type. Consider using 'default(T)' instead.


I want the return value to be
null
not
default(T)
.

what should I do?

Answer

null is an invalid value for value types such as int or double. Therefore, you have to restrict the generic type parameter to classes like so:

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

Then, the compiler error will disappear.