0
開始ブロック内にインスタンス名を付けることはできますか?次のコードを使用しているときにエラーが表示されます。 「未割り当てのローカル変数の使用」開始ブロック内のエラー:割り当てられていないローカル変数の使用
コードブロック
Item item = new Item()
{
Qty1 = item.Qty1 + item.Qty2
}
開始ブロック内にインスタンス名を付けることはできますか?次のコードを使用しているときにエラーが表示されます。 「未割り当てのローカル変数の使用」開始ブロック内のエラー:割り当てられていないローカル変数の使用
コードブロック
Item item = new Item()
{
Qty1 = item.Qty1 + item.Qty2
}
を使用すると、アイテムのクラスがあるとします。
その後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をインスタンス化ブロック内に割り当てるときは、int
をint?
と宣言する必要があります。
編集:
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。
いいえ、それはまだ 'item'と宣言されていない変数を参照しています – Sherlock
qty1とqty2の変数を値型で宣言してから(例えばintなど)指定してください。 –
@HammadNasirあなたは試しましたか? – fubo