2010-12-04 10 views
0

次のような工夫が施された構造体struct - 使用前に初期化されないかもしれない

public struct CarParts 
{ 
     public int trunk; 
     public int door; 
} 

なぜ私は "cpは使用前に初期化されないかもしれない"というエラーが出ます。なぜ私は静的メソッドを追加する前にそれを補完するのに使ったのですか?

public void Test() 
{ 
      CarParts cp; 
      cp.trunk= 1; 
      cp.door= 4; 
} 
+3

私は言語を正しく推測しましたか?実際のコードについて議論したいときはいつでも、あなたが使っている言語でタグ付けするべきです。 –

+2

失敗したコードを表示してください。あなたが投稿したコードは、それ自身では失敗しません。 –

+1

注1:すべてのフィールドを初期化する前にプロパティ(自動プロパティさえも)に割り当てることはできません。注2:変更可能な構造体は悪です。注3:パブリックインスタンスのフィールドは通常不正なスタイルです – CodesInChaos

答えて

2

私はこれがあなたの質問に関連していることを推測する:

あなたはnew演算子を使用して、構造体オブジェクトを作成すると、それが作成されると、適切なコンストラクタが呼び出されます。クラスとは異なり、new演算子を使用せずに構造体をインスタンス化することができます。 newを使用しない場合、フィールドは未割り当てのままであり、オブジェクトはすべてのフィールドが初期化されるまで使用できません。

+0

これは、フィールドの1つが返される前に設定されていなかったため、別のフィールドを構造体に追加しました。ありがとう!! – jon

関連する問題