C # La référence d'objet n'est pas définie sur une instance d'un objet. Classe d'instanciation dans une liste?
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)
{
}
}
Ci-dessus est la classe, juste pour un peu de fond.
public void AddProduct(string name, decimal price, int quantity)
{
lstOrderitem.Add(new OrderItem(name, price, quantity));
}
Sur le code à l'intérieur de la AddProduct méthode est l'endroit où j'obtiens l'erreur mentionnée dans le titre.
Je suis juste essayer d'instancier la classe et de l'ajouter à une collection destinée à être affichée dans une zone de liste sur mon programme.
La "AddProduct" sera appelé sur un événement clic du bouton
Erreur = NullReferenceException - la référence d'Objet n'est pas définie à une instance d'un objet.
Je me demandais si quelqu'un savait pourquoi ce qui se passait car je pensais que depuis que j'ai fais une NOUVELLE instance de la classe tout en ajoutant à la liste qu'il aurait quelque chose de référence. Merci si quelqu'un sait quel est le problème.
Modifier
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));
}
source d'informationauteur Taemint
Vous devez vous connecter pour publier un commentaire.
Vous devez les initialiser
lstOrderitem
propriété dans le constructeur, comme ceci:MODIFIER
P. S. Microsoft suggère de commencer les noms de vos propriétés en lettres majuscules, pour éviter la confusion avec les variables membres, qui devrait être nommé en commençant par une lettre minuscule.
Il semble que vous n'avez pas d'initialiser votre référence
lstOrderitem
. Déboguer votre code si vos références de la valeur estnull
vous devez l'initialiserlstOrderitem
avant de l'utiliser.Il semble que vous n'avez pas d'initialiser votre référence lstOrderitem. Déboguer votre code si votre valeur de référence est nullvous devez l'initialiser lstOrderitem avant de l'utiliser.