web-dev-qa-db-ja.com

C#オブジェクト参照がオブジェクトのインスタンスに設定されていません。リスト内でクラスをインスタンス化しますか?

public class OrderItem
{
    public string ProductName { get; private set; }
    public decimal LatestPrice { get; private set; }
    public int Quantity { get; private set; }
    public decimal TotalOrder { get {return LatestPrice * Quantity;}}

    public OrderItem(string name, decimal price, int quantity)
    {

    }

    public OrderItem(string name, decimal price) : this(name, price, 1)
    {

    }
}

上記は、いくつかの背景のためのクラスです。

public void AddProduct(string name, decimal price, int quantity)
{
    lstOrderitem.Add(new OrderItem(name, price, quantity));           
}

AddProductメソッド内のコードで、タイトルに記載されているエラーが発生します。

クラスをインスタンス化してコレクションに追加し、フォームプログラムのリストボックスに表示しようとしています。

「AddProduct」はボタンクリックイベントで呼び出されます

エラー= NullReferenceException-オブジェクト参照がオブジェクトのインスタンスに設定されていません。

クラスの新しいインスタンスを作成しているので、それをリストに追加しているので、参照するものもあると思ったので、なぜこれが起こっているのか誰かが知っているのだろうかと思っていました。誰かが問題が何であるか知っているならば、ありがとう。

編集

    public List<OrderItem> lstOrderitem{ get; private set; }
    public int NumberOfProducts { get; private set; }
    public decimal BasketTotal { get; private set; }

    public ShoppingBasket()
    {
        //List<OrderItem> lstOrderitem = new List<OrderItem>();
    }

    public void AddProduct(string name, decimal price, int quantity)
    {
        lstOrderitem.Add(new OrderItem(name, price, quantity));


    }
9
Taemint

次のように、コンストラクターでlstOrderitemプロパティを初期化する必要があります。

[〜#〜]編集[〜#〜]

public MyClass() {
    lstOrderitem = new List<OrderItem>();
}

P.S.小文字で始まる名前を付ける必要があるメンバー変数との混同を避けるために、プロパティの名前は大文字で始めることをお勧めします。

25
dasblinkenlight

参照lstOrderitemを初期化していないようです。参照値がnullの場合は、コードをデバッグします。使用する前にlstOrderitemを初期化する必要があります。

3
Thomas

参照を初期化していないようですlstOrderitem。参照値がnullの場合は、コードをデバッグします。使用する前にlstOrderitemを初期化する必要があります。

public MyClass() {
    lstOrderitem = new List<OrderItem>();
}
0
mhine