2017-05-12 6 views
-1

私は継承クラスの使い方をC#に勉強しています。なぜ私のコードが無効であるのかについて何の手掛かりもありません。子クラスのコンストラクタを使用するとエラーが発生します

私が達成しようとしているのは、別のクラス(Parent)を継承するクラス(Child)を持つことです。各クラスには独自のコンストラクタが必要です。エラーが読み:

< < CS7036必要 < <仮パラメータの 'いるisOpen' 'parent.parentは(ブール値)'

public class Parent 
    { 
     internal bool IsOpen; 

     public Parent(bool isOpen) 
     { 
      this.IsOpen = isOpen; 
     } 
    } 

    public class Child : Parent 
    { 
     public Child(bool isOpen) 
     { 
      this.IsOpen = isOpen; 
     } 
    } 

答えて

1

あなたに対応して与えられた引数はありませんbaseキーワードを使って親に渡す必要があります:

public class Parent 
{ 
    internal bool IsOpen; 

    public Parent(bool isOpen) 
    { 
     this.IsOpen = isOpen; 
    } 
} 

public class Child : Parent 
{ 
    public Child(bool isOpen) 
     : base(isOpen) 
    { 
    } 
} 
+0

私が使用しているVidetutorialは、その情報を含めることができませんでした。ありがとう!副題:私は自分のフィールドにクラスからアクセス可能で、継承可能にしたい。ここで 'internal'修飾子は良いですか? – menteith

+1

'protected'は、メンバーがそれ自身とそれを継承するものからアクセスできることを意味します。 – maccettura

+1

@menteithいいえ、それは 'protected'です。 「内部」とは、アセンブリがそれを見ることができる何かを意味します。 –

1

あなたのサブクラスで基底クラス(Parent)のコンストラクタを呼び出す必要があります:

public class Parent 
{ 
    internal bool IsOpen; 

    public Parent(bool isOpen) 
    { 
     this.IsOpen = isOpen; 
    } 
} 

public class Child : Parent 
{ 
    public Child(bool isOpen) : base(isOpen) 
    { 
    } 
} 

これはまた、あなたがChildのコンストラクタで再IsOpenを設定するための必要がなくなります。

関連する問題