2017-09-25 15 views
-2
[Serializable] 
public class A 
{ 
    public int i; 
    public string j; 
    public B b; 
} 

[Serializable] 
public class B 
{ 
    public int k; 
    public string l; 
} 

A a = new A(); 
a.b.k = 0; 

のインスタンスに設定されていないオブジェクト参照は、IはAのオブジェクトを宣言し、Aのオブジェクトにbkの値を代入しよう。しかし、それはオブジェクトだと言っているNullReferenceExceptionとNullReferenceException:上記の例では、オブジェクトのC#

私は何かが不足していますか?C#のメインクラスのフィールドとして別のクラスを使用している場合、クラスのオブジェクトを宣言する方法?

+0

'A'(' public B b; ')の' b'プロパティは決して初期化しません。 –

答えて

2

クラスBのオブジェクトを初期化するために行方不明です。 B bもクラス変数です!

A a = new A(); 
a.b = new B(); // This is what you are missing 
a.b.k = 0; 
+2

実際、 'b'プロパティはおそらく' A'のコンストラクタで初期化されるべきです。 @ ZoharPeled合意された –

+0

。それはもっと理にかなっています。 – praty

+0

これは正しい答えとして受け入れられるべきです。 –

関連する問題