2016-06-20 5 views
0

開始ブロック内にインスタンス名を付けることはできますか?次のコードを使用しているときにエラーが表示されます。 「未割り当てのローカル変数の使用」開始ブロック内のエラー:割り当てられていないローカル変数の使用

コードブロック

Item item = new Item() 
{ 
    Qty1 = item.Qty1 + item.Qty2 
} 
+0

いいえ、それはまだ 'item'と宣言されていない変数を参照しています – Sherlock

+0

qty1とqty2の変数を値型で宣言してから(例えばintなど)指定してください。 –

+0

@HammadNasirあなたは試しましたか? – fubo

答えて

0

を使用すると、アイテムのクラスがあるとします。

その後
public class Item 
{ 
    // use constructor 
    public Item() 
    { 
     // set your default values here 
     this.Qty1 = 0; // example 
     this.Qty2 = 0; 
    } 

    // declare both quantity item properties here (including nullables) 
    public int Qty1 { get; set; } 
    public int Qty2 { get; set; } 
} 

、クラス内のアクセスプロパティ、値が設定されていたと仮定します:

Item item = new Item() 
{ 
    Qty1 = item.Qty1 + item.Qty2 
} 

NullReferenceExcepti Qty1をインスタンス化ブロック内に割り当てるときは、intint?と宣言する必要があります。

編集

public Item(int Qty1, int Qty2) : this() 
{ 
    this.Qty1 = Qty1 + Qty2; 
} 

をし、それを呼び出す:

私はOPは、いわゆる複数のコンストラクタは、デフォルト値を割り当てるための空のパラメータを持つ1とQty1プロパティへの追加を行うための1を必要とするかもしれ見ます
Item item = new Item(Qty1, Qty2); // assume Qty1 & Qty2 are method parameters here 

CMIIW。

関連する問題