Tae*_*int 9 c# collections encapsulation list object
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)
{
}
}
Run Code Online (Sandbox Code Playgroud)
上面是班级,只是为了一些背景.
public void AddProduct(string name, decimal price, int quantity)
{
lstOrderitem.Add(new OrderItem(name, price, quantity));
}
Run Code Online (Sandbox Code Playgroud)
在AddProduct方法内部的代码是我得到标题中声明的错误.
我只是想实例化该类并将其添加到一个集合中,以便在我的表单程序的列表框中显示.
将在按钮单击事件上调用"AddProduct"
Error = 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));
}
Run Code Online (Sandbox Code Playgroud)
das*_*ght 24
你应该lstOrderitem在构造函数中初始化属性,如下所示:
编辑
public MyClass() {
lstOrderitem = new List<OrderItem>();
}
Run Code Online (Sandbox Code Playgroud)
PS Microsoft建议以大写字母开始使用属性的名称,以避免与成员变量混淆,成员变量应以小写字母开头.
| 归档时间: |
|
| 查看次数: |
46636 次 |
| 最近记录: |