简体   繁体   中英

C# Object reference not set to an instance of an object. Instantiating Class within a List?

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)
    {

    }
}

Above is the class, just for some background.

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

On the code inside the AddProduct method is where I am getting the error stated in the title.

I'm just trying to instantiate the class and add it to a collection to be displayed in a listbox on my form program.

The "AddProduct" will be called on a button click event

Error = NullReferenceException - Object reference not set to an instance of an object.

I was wondering if anybody knew why this was happening since I thought that since I am making a NEW instance of the class while adding it to the list that it would have something to reference too. Thank you if anybody knows what the problem is.

Edit

    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));


    }

You should initialize lstOrderitem property in the constructor, like this:

EDIT

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

PS Microsoft suggests starting the names of your properties in capital letters, to avoid confusion with member variables, which should be named starting with a lowercase letter.

It looks like you didn't initialize your reference lstOrderitem . Debug your code if your references value is null , you need to initialize lstOrderitem before using it.

It looks like you didn't initialize your reference lstOrderitem . Debug your code if your reference value is null , you need to initialize lstOrderitem before using it.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM