2016-12-05 10 views
1

私はクラスFooと公開フィールドMyFieldを持っています(私は知っています、悪いデザイン、何年も前にツールで自動生成されましたが、自動プロパティに向かうためにコードを再生成する計画は最近ありません) )とFooから派生するクラス:フィールドがコンストラクタ内でヌル(またはデフォルト値)になることはありませんか?

public class Foo 
{ 
    public int MyField; 
} 
public class Bar : Foo 
{ 

} 

Fooのコンストラクタ内で、私は条件が通過することはありませんと仮定して私には疑わしいチェックがあります:

if(this.MyField != 0) ... 

フィールドが設定されていませんベースクラスのコンストラクタで。したがって、私の質問は、この小切手が今まで通り抜ける可能性はありますか?

次のような場合には、その質問に答えるために、私の心に来た:

  1. MyFieldのための別のデフォルト値を設定しますBarクラス。これはBarのコンストラクタ内でのみ可能であり、したがって、後にチェックをを実行します - >チェックwon'tパス
  2. コンストラクタチェインBarに。チェック自体は再びBarのコンストラクタが実行されるを実行する - >チェックが、私はどのような場合に不足しているわけではないので、ちょうど私can'tそのチェックを、省略することを願って再び

失敗しますか?

+0

実際にその中で何が行われますか? – Evk

+0

@エヴァークなぜこれは何の役割を果たしますか?とにかくフィールドの値はifブロック内で変更されます。しかし、私は実際にその点に来る条件に興味があります。 – HimBromBeere

+0

本当に 'Foo'コンストラクタで、' Bar'ではありませんか?後者の場合、何かが基底クラスで変更された場合(例えば、フィールドが明示的に初期値を取得する場合など)、互換性を保証するためのチェックであると仮定します。 – Sinatr

答えて

関連する問題