-1

リスト参照に関して、この 2 つのクラスの違いは何ですか。

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

5 に答える 5

5

最初の例では、フィールドに値が割り当てられることはありません。null表示されていないコードがない限り、常に割り当てられます。つまり、機能しません

于 2013-09-06T13:22:58.037 に答える
1

最初のものはリストに値を設定しないため、null になります。したがって、「Add()」が呼び出されると、null 参照例外がスローされます。リストがnullになるのを避けるために、コンストラクターでリストをインスタンス化することもできます(2番目の例で行っていることはそれと同等です)

于 2013-09-06T13:26:01.020 に答える
1

内のlistフィールドSampleList1はインスタンス化されていないため、null 例外をスローします。それ以外の場合、両方のクラスは実質的に同一です。

于 2013-09-06T13:23:07.620 に答える
0

最初の例では、リストのインスタンスがないため、エラーが表示されます。次のように実装してみてください。

 class SampleList<T>
{       
    private readonly List<T> _myList;

    public SampleList(List<T> myList)
     {
         _myList = myList;
     }

    public void Add(T items)
    {

        _myList.Add(items);
    }


}
于 2013-09-06T16:36:40.683 に答える
0

最初の例はリスト変数を作成しますが、それへの参照は作成しません。オブジェクトを追加しようとすると、実行時エラーが発生します。これを回避する方法は、list = new list を設定する New() サブルーチンを追加することです。

2 つ目は、オブジェクトを宣言し、オブジェクトを使用できるように参照を作成します。

于 2013-09-06T13:23:38.680 に答える