Ошибка 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>();