2012-01-23 2 views
0

ここで何が間違っていると誰かが示唆できますか?私は(追加するだけで1クラス)をこのように呼んでいる場合は、次のようにそれを呼び出すコンストラクタのオーバーロード

public class Student 
{ 
    public List<Class> Classes { get; set; } 

    public Student(List<Class> classes) 
    { 
     this.Classes = classes; 
    } 
    public Student(Class class) 
    { 
     //This does not work 
     //Error: Object reference not set to an instance of an object. 
     this.Classes.Add(class); 
    } 
} 

var classes = new List<Classes>(); 
classes.Add(new Class("English", "Elective")); 
classes.Add(new Class("Math", "Core")); 
..more classes to add 
Student student = new Student(classes); 

を作品

Student student = new Student(new Class("Masters","Accounts")); 

私はエラーを取得します。 ありがとうございます。

+0

あなたがここでエラーメッセージを公開する場合があります。 –

+0

1. Userクラスのコードはどこにありますか? 2.あなたの目標は何ですか?エラーを取り除くだけでいいですか? –

+1

@MAKKAM - コンストラクタ内にエラーメッセージを公開しました。 //エラー:オブジェクト参照がオブジェクトのインスタンスに設定されていません。 – peacefulmember

答えて

6

あなたのオーバーロードを初期化されていないクラスを追加する前に、クラスを初期化する必要があります。これを試してみてください:

public class Student 
{ 
    public List<Class> Classes { get; set; } 

    public Student(List<Class> classes) 
    { 
     this.Classes = classes; 
    } 
    public Student(Class class) 
    { 
     this.Classes = new List<Class>(); 
     this.Classes.Add(class); 
    } 
} 
+0

おっと!私の悪い。どうもありがとう。これはエラーを解決しました。 – peacefulmember

0

オブジェクトを追加する前にClassesを初期化する必要があります。二コンストラクタで

3

、あなたはクラスでClasses

2

this.Classesが初期化されていません。

public class Student 
{ 
    public List<Class> Classes { get; set; } 

    public Student(List<Class> classes) 
    { 
     this.Classes = classes; 
    } 
    public Student(Class class) 
    { 
     this.Classes = new List<Class>(); 
     this.Classes.Add(class); 
    } 
} 
関連する問題