2017-03-05 18 views
0

私は2つのクラス、class Aclass Bを持っています。メンバー初期設定はC#

public class A 
{ 
    public int someNumber; 

    public A(int a) 
    { 
     someNumber = a; 
    } 
} 

class Bclass Aの対象となるフィールドを持っています。 C++では、これを行うことができます:

public class B 
{ 
    public A foo; 

    public B(int a) : foo(a) { } 
} 

しかし、これはC#で動作しません。だからどのようにC#でこの問題を解決することができますclass Aの既定のコンストラクタを使用せずに。具体的には、のコンストラクタを作成して、の値をfooとすると、どのようにすればよいですか?

+1

これはC++については本当にないです。 C++タグを削除してください。 –

答えて

5

あなたはこのような何かを試みることができる:

public class B 
{ 

    public A thing; 

    public B(int a) 
    { 
     thing = new A(a); 
    } 
} 
+0

あなたは、代入に 'A'の代わりに' thing'を入れることを意味すると思います。 –

+0

@MaxWeinzierlあなたは血まみれです!私の悪い。ありがとう – Christos

+0

@Christosああ、ありがとう、ありがとう。私はコンストラクタがコンストラクタの本体が実行される前にすべてのクラスメンバを常に初期化したと考えたので、これはうまくいかないと思っていました。特定のメンバのためのデフォルトのコンストラクタがないと、エラーにつながります。 – Morten

関連する問題