2016-09-14 11 views
1

は、私はクラスクラスのすべての新しいインスタンスがすべてのフィールドまたはプロパティ

class Car 
{ 
    string color; 
    bool fourDoor; 
    int numberOfTires; 
} 

を持っていると私は私がnumberOfTiresには何も割り当てられていない

Car myCar = new Car(); 
myCar.color = "green"; 
myCar.fourDoor = true; 

新しいインスタンスを作成するとしましょう実装していることを確認どのようにしてコンパイル警告/エラーをスローするのですか?

答えて

5

これは、すべてのプロパティに何かを割り当てる必要がないため、コンパイラでサポートされているものではありません。 とすることができますが、それほど重要でないケースではすぐに「停止問題」となります。

Car場合は(あなたが最初の値を初期化していない場合のみ)は非常に具体的な構文で確認することができ、その後structだったが、あること注:それはあなたを助けにはなりませんように微妙であること、良いアドバイスではありません(それは、変更可能な構造体の問題について議論する前です)。

場合によっては、が必要なものを宣言するためにコンストラクタを使用することをお勧めします。それで、次のようになります:

Car myCar = new Car(color: "green", fourDoor: true, numberOfTires: 42); 

私の明示的なパラメータ名の使用は、単に可視性のためです。それだけでだけでなく、動作します:

Car myCar = new Car("green", true, 42); 

をこのようなものにマッピングします:あなたがで初期化する必要があるプロパティを設定することができ

class Car 
{ 
    public string Color {get;} 
    public bool FourDoor {get;} 
    public int NumberOfTires {get;} 
    public Car(string color, bool fourDoor, int numberOfTires) 
    { 
     Color = color; 
     FourDoor = fourDoor; 
     NumberOfTires = numberOfTires; 
    } 
} 
+0

これは基本的に私はクラス、ちょうどのような[OK]を、今私はそれを得る「クリック」それらの事のその1を見てどのように変化しました。コード例は本当に多くの助けになりました。ありがとう! – Skedge

+0

私が明確にする必要がある唯一の他の事は、コンストラクタはプロパティでセッターを使うのですか? – Skedge

+0

@Skedgeコンストラクタは、そのクラスの新しいインスタンスを宣言するときにのみ呼び出されます。それは決して再び呼び出されません。 – ThePerplexedOne

1

ジェイソンはあなたの問題のための良いオプションがあります:https://stackoverflow.com/a/10720455/3836632

「私はあなたの設定パラメータは、次にreadonly(と間違いなくprivateが、プロパティを介してアクセス)もエラーとしてマークされる警告を設定する必要があることだと思う後。あなたはこれらの変数の1を初期化するために失敗したとき、あなたはコンパイル時にエラー

CalculatorConfig.param1が割り当てされることはありませんフィールドを得るでしょうし、常にそのデフォルト値を持つことになります。

コンパイル時に問題が発生しました。

0
  • リスト項目

コンストラクタの引数。この方法では、オブジェクトの作成中にユーザーに値を渡すことができます。

パブリッククラス車 {公共駐車 {this.Color =カラー(文字列色、BOOL fourDoorは、numberOfTiresをINT)。 this.FourDoor = fourDoor;これは です。NumberOfTires = numberOfTires; }

public string Color { get; set; } 
    public bool FourDoor { get; set; } 
    public int NumberOfTires { get; set; } 
} 
関連する問題