Объект 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));
}
3 ответов
вы должны инициализировать lstOrderitem
свойство в конструкторе, например:
редактировать
public MyClass() {
lstOrderitem = new List<OrderItem>();
}
П. С. Майкрософт предлагает начать имена своих свойств заглавными буквами, чтобы избежать путаницы с переменными-членами, которые должны быть названы, начиная со строчной буквы.
похоже, вы не инициализировать ссылку lstOrderitem
. Отладка кода, если значение ссылки null
, вам нужно инициализировать lstOrderitem
перед его использованием.
похоже, вы не инициализировать ссылку lstOrderitem. Отлаживайте код, если значение ссылки null, вам нужно инициализировать lstOrderitem перед использованием.
public MyClass() {
lstOrderitem = new List<OrderItem>();
}