在C#中实例化组合的clases

时间:2013-09-06 13:21:08

标签: c# .net oop

这两个类与列表引用有什么区别。

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

5 个答案:

答案 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);
    }


}