0

この例があるとしましょう:

class A : SomeAbstractClassWithProperties
{
  public A(string id, int size)
  {
    this.Name = "Name1";
    this.Something = new SomethingElse(id, size);
  }

  //...some stuff
}

class B : A
{
  public B(string id, int size)
  {
    this.Name = "Name2";
    this.Something = new SomethingElse(id, size);
  }
}

わかりましたこれはうまくいきません:

Inconsistent accessibility: base class A is less accessible than class 'B'
'A' does not contain a constructor that takes 0 arguments

しかし、ご覧のとおり、クラス Aクラス Bのコンストラクターはほとんど同じです。これだけです。名前が違います。クラス Bを書き直すにはどうすればよいですか? 助言がありますか?ありがとうございました

4

3 に答える 3

3

コードを更新してください

class B : A
{
  public class B(string id, int size) : base(id, size) 
  { 
     this.Name = "Name2";
  }
}

B コンストラクターが、存在しない A() デフォルト コンストラクターを呼び出そうとする場合です。

于 2012-09-04T12:24:45.407 に答える
0

デフォルトの(パラメーターなしの)コンストラクターをクラスAに追加するか、クラスBのコンストラクターを次のように変更する必要があります。

public class B(string id, int size) : base(id, size)
  {
    this.Name = "Name2";
    this.Something = new SomethingElse(id, size);
  }
于 2012-09-04T12:30:15.003 に答える