3

コンストラクターに送信されたクラスのフィールドを初期化するための、次のような簡単な方法を覚えているようです。

 Class A {
    int n;
    public A(int N) : n(N) {}
 }

手がかりはありますか?

4

2 に答える 2

4

次のように、コンストラクターの後にクラス フィールドを初期化する簡単な方法があります。

public class A
  {
    public int N;
    public string S;
    public A() {}
  }

  class B
  {
     void foo()
     {
        A a = new A() { N = 1, S = "string" }
     }
  }
于 2012-05-02T06:22:43.340 に答える
2

それは C++ ですが、質問に C# というタグを付けました。C# には初期化リストの概念がなく、コンストラクターでフィールドを割り当てるだけです。ただし、同様の方法でコンストラクターをチェーンしたり、基本クラスのコンストラクターを呼び出したりすることができます

// call base class constructor before your own executes
public class B : A
{
    public B(int whatever)
        : base(something)
    {
        // more code here
    }
}

// call secondary constructor
public class B : A
{
    private int _something;

    public B() : this(10) { }

    public B(int whatever)
    {
        _something = whatever;
    }
}
于 2012-05-02T06:10:13.490 に答える