10
votes

C # Référence d'objet non définie sur une instance d'objet. Classe instantanée dans une liste?

    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 commentaires

Utilisez le débogueur, cela devrait vous aider à l'avenir.


// list lstorderitem = nouvelle liste (); était presque correct: vous devriez supprimer // list partie pour en faire une initialisation de une propriété membre plutôt qu'une déclaration locale.


Ahh ok malade essayer tout cela et revenir à vous merci de m'aider.


3 Réponses :


30
votes

Vous devez initialiser lstorderitem dans le constructeur, comme celui-ci:

edit xxx


4 commentaires

Le "lstorderitem est une propriété désolé d'avoir dû inclure cette partie. Édité le Pop pour montrer ceci


@Taelmit: Même s'il s'agit d'une propriété auto , vous devez l'initialiser, comme une réponse fournie et que vous l'avez fait.


Pourquoi le compilateur ne se plaint pas lorsque nous essayons d'utiliser une propriété d'instance qui n'a pas été initialisée?


@Jayjay Parce que le compilateur initialise implicitement les propriétés d'instance, en veillant à ce qu'il n'existe pas de propriété d'instance qui n'a pas été initialisée.



3
votes

On dirait que vous n'avez pas initialisé votre référence lstorderitem . Déboguer votre code si votre valeur de référence est null , vous devez initialiser lstorderitem avant de l'utiliser.


1 commentaires

Le "lstorderitem est une propriété désolé d'avoir dû inclure cette partie. Édité le Pop pour montrer ceci



0
votes

On dirait que vous n'avez pas initialisé votre référence lstorderitem em>. Déboguer votre code si votre valeur de référence est null forte>, vous devez initialiser lstorderitem em> avant de l'utiliser.

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


0 commentaires