2017-11-15 8 views
-1

メソッドが呼び出されるとリストに何も追加されず、例外がスローされます。私はこのようやった、これはあなたがインスタンスを作成していない原因だ例外Listプロパティを処理する方法

public class Student 
{ 
    protected List<string> _mark; 

    public List<string> Mark 
    { 
     get { return _mark; } 
     set { _mark = value; } 
    } 

    public void Get() 
    { 
     Mark.Add("Hello"); 
    } 
} 
static void Main(string[] args) 
    { 
     Student a = new Student(); 
     a.Get(); 
    } 

答えて

2

を与える

public List<string> Mark = new List<string>(); 

:それはどのように行われ、これを記述することなく行うことが可能であるべきである リストの中にはエラーがあります。それはあなたの財産はそれを返す必要がありますし、何のセッターは、あなたが_markを初期化しません

public List<string> Mark 
{ 
    get { return _mark; } 
} 
1

を必要としない

private List<string> _mark = new List<string>(); 

でなければなりません。 Mark.Add("Hello")Markのゲッターが_markを返し、そのヌルオブジェクトで.Addを呼び出すと例外がスローされます。

たとえば、

について
protected List<string> _mark = new List<string>(); 
+0

'new List <>' ?? 'List <>'は無制限ジェネリック型であり、閉じられていません – Rahul

+0

@Rahul最近、あまりにも多くのJavaが...修正されました。 – hnefatl

0

「それはこれを記述することなく行うことが可能です」(およびnew使用)新しいオブジェクトを作成すると、あなたの意図ではないかもしれないので、答えは、ノーです。 次(不自然)の例ではbobを考えてみましょう:

List<string> jim = new List<string>(); 
    List<string> bob; 
    //code.. 
    bob = jim; 
    //code... 

より現実的なシナリオはあなたが変数にList<string>を取得List<List<string>>かもしれません。

関連する問題