这两个类与列表引用有什么区别。
public class SampleList1<T>
{
List<T> list; // ref
public void add(T items)
{
list.Add(item);
}
}
public class SampleList2<T>
{
List<T> list = new List<T>(); //ref
public void add(T items)
{
list.Add(item);
}
}
答案 0 :(得分:5)
在第一个示例中,该字段永远不会分配值 - 除非有一些您不能显示的代码,否则它始终为null
- 因此:它不会工作
答案 1 :(得分:1)
list
中的SampleList1
字段将抛出空异常,因为它未实例化。否则两个类几乎完全相同。
答案 2 :(得分:1)
第一个不会为List设置值 - 因此它为null。因此,当调用“Add()”时,它将抛出一个空引用异常。您还可以在构造函数中实例化列表以避免它为null(您在第二个示例中所做的与此相同)
答案 3 :(得分:0)
第一个示例创建列表变量,但不创建对它的引用。如果您尝试向其添加对象,则会收到运行时错误。解决这个问题的方法是添加一个New()子,它将设置list = new list。
第二个声明对象,然后创建一个引用,以便可以使用该对象。
答案 4 :(得分:0)
在第一个示例中,您看到一个错误,因为您没有列表实例 您应该尝试按如下方式实现它:
class SampleList<T>
{
private readonly List<T> _myList;
public SampleList(List<T> myList)
{
_myList = myList;
}
public void Add(T items)
{
_myList.Add(items);
}
}