为什么允许我在方法声明中返回null,而方法声明也可以返回值类型
我认为IList<T>对它们的实现类型没有限制
此外,如果一个方法返回IList<T>返回默认值?
public IList<int> SomeMethod()
{
// Allowed
return new MyStructList();
// Allowed
return null;
}
public struct MyStructList : IList<int>
{
...
}
您的SomeMethod
方法返回一个IList<int>
。IList<T>
是一个接口,它是一个引用类型。null
是引用类型的允许值。
当你做return new MyStructList()
时,这基本上是的缩写
IList<int> ret = new MyStructList();
return ret;
IList<int> ret = new MyStructList();
框MyStructList()
:为其分配一个框,将MyStructList
复制到该框中,并创建对该框的引用并将其分配给ret
。这是必要的,因为ret
的类型是IList<int>
,而IList<T>
是引用类型,所以ret
只能包含引用。