Ошибка System.NullReferenceException в программе

В моей программе я получаю сообщение об ошибке:

An unhandled exception of type 'System.NullReferenceException' occurred in POS    System.exe

Additional information: Object reference not set to an instance of an object.

Это происходит, когда я пытаюсь добавить что-то в TransactionList, как показано ниже. TransactionList - это список экземпляров класса, объявленный так:

public static List<Transaction> TransactionList { get; set; }

И это класс Transaction:

class Transaction
{
    public double TotalEarned { get; set; }
    public double TotalHST { get; set; }
    public double TotalCost { get; set; }
    public string Category { get; set; }
    public int DaysSince2013 { get; set; }
}

Любая подсказка, что здесь не так? Кажется, я не могу понять, почему выбрасывается эта ошибка... Спасибо!

for (int i = 0; i < (lines / 5); i++)
        {
            TransactionList.Add(new Transaction //Error happens on this line
            {
                TotalEarned = Convert.ToDouble(stringArray[(i * 5)]),
                TotalCost = Convert.ToDouble(stringArray[(i * 5) + 1]),
                TotalHST = Convert.ToDouble(stringArray[(i * 5) + 2]),
                Category = stringArray[(i * 5) + 3],
                DaysSince2013 = Convert.ToInt32(stringArray[(i * 5) + 4])
            });
        }

3 ответа

Решение

Просто инициализируйте его перед вашим for loop?

if (TransactionList == null)
   TransactionList = new List<Transaction>();

for (int i = 0; i < (lines / 5); i++)
        {
            TransactionList.Add(new Transaction //Error happens on this line
            {
                TotalEarned = Convert.ToDouble(stringArray[(i * 5)]),
                TotalCost = Convert.ToDouble(stringArray[(i * 5) + 1]),
                TotalHST = Convert.ToDouble(stringArray[(i * 5) + 2]),
                Category = stringArray[(i * 5) + 3],
                DaysSince2013 = Convert.ToInt32(stringArray[(i * 5) + 4])
            });
        }

Или если вам не нравится это, так как вы объявили это как staticВы могли бы сделать:

public static List<Transaction> TransactionList = new List<TransactionList>();

Вы должны инициализировать список перед его использованием. Если для ссылки на объект не установлена ​​ошибка экземпляра, это означает, что объект физически не существует

Вероятно, TransactionList и / или stringArray равны нулю.

попробуйте сделать это

публичный статический список TransactionList { get; задавать; }

if(TransactionList  == null)
   TransactionList  = new List<Transaction>();
Другие вопросы по тегам