-3

私は1つのAbstract基本クラスを持っているので、MyBaseと言います。抽象メソッド呼び出しを持つ文字列値を持つパラメーター化されたコンストラクターがあります。また、MyChild という 1 つの子クラスもあります。コンストラクターはなく、1 つだけパブリック メソッドがあり、基本クラスのパラメーター化されたコンストラクターを子クラスに呼び出したいと考えています。

それに応じて解決策を教えてください...

4

3 に答える 3

1

ここであなたが何を求めているのか、私は本当に多くの手がかりを持っていないので、推測します:

abstract class MyBase
{
    protected MyBase(string foo) { }
}

class Child : MyBase
{
    public Child(string foo)
        : base(foo) 
    { }
}

Child抽象クラスをインスタンス化できないため、構築の一部でないと「呼び出す」ことはできません。

于 2012-07-27T10:37:52.593 に答える
1

子クラスでコンストラクターを指定しない場合、親クラスのコンストラクターが使用されます。つまり、子クラスを次のようにインスタンス化できます

Child child = new Child(initString);

上記の子コンストラクターが定義されていない場合、同じシグネチャで親コンストラクターを伝播 (呼び出し) します。

于 2012-07-27T10:45:00.463 に答える
0

文脈なしであなたを助けるのは難しいですが、私は試してみます。多分あなたはそのようなことをすることができます:

    abstract class MyBase
    {
      protected string _foo;
      protected MyBase(string foo) 
      {
         _foo = foo;
      }
    }

    class Child : MyBase
    {
        public Child()
        :base(string.Empty)
        {}

       public string Foo 
       {
        get 
        {
           return _foo;
         }
         set
         { 
           _foo = value;
          }
    }
}

したがって、抽象クラスをインスタンス化できないため、作成できますが、値を保持しているvar obj = new Child() {Foo = "string"}; 場合にのみ、このバリアントを選択できます。ただし、変更できる場合は、@Adam Houldsworth が提案したように、コンストラクターを追加することをお勧めします。MyBasefooChild

于 2012-07-27T10:44:42.960 に答える