gpt4 book ai didi

c# - 为什么会出现 NullReferenceException?

转载 作者:行者123 更新时间:2023-11-30 21:11:57 26 4
gpt4 key购买 nike

我有一项学校作业,我快完成了,只剩下一件事了。每次启动程序时,我都会收到 NullReferenceException。除了抛出异常的 ListView 外,一切都按预期工作。

这是来自主窗体:

private void UpdateListView()
{
lstReservations.Clear();

string[] seats = new string[m_seatMngr.GetSeatInfoStrings((SeatManager.DisplayOption)cmboBoxListAlternitives.SelectedIndex, out seats)];

if (seats != null && seats.Length > 0)
{
string[] split = new string[4];

for (int i = 0; i < seats.Length; i++)
{
split = seats[i].Split('|');

ListViewItem newItem = new ListViewItem(split[0]);
newItem.SubItems.Add(split[1]);
newItem.SubItems.Add(split[2]);
newItem.SubItems.Add(split[3]);
//Lägger till newItem till lstReservations
lstReservations.Items.Add(newItem);
}
}
}

抛出异常的是这一行:

seats[i].Split('|');

这是 SeatManager 类中的 GetSeatInfoString 方法:

public int GetSeatInfoStrings(DisplayOption choice, out string[] strSeatInfoStrings)
{
strSeatInfoStrings = null;
int count = GetNumOfSeats(choice);

if (count <= 0)
{
return 0;
}

strSeatInfoStrings = new string[count];

int i = 0; //counter for return array
//Is the element corresponding with the index empty
for (int index = 0; index < m_totNumOfSeats; index++)
{
switch (choice)
{
case DisplayOption.AllSeats:
strSeatInfoStrings[index] = GetSeatInfoAt(index);
i++;
break;
case DisplayOption.ReservedSeats:
if (m_nameList[index] != null)
{
strSeatInfoStrings[i] = GetSeatInfoAt(index);

i++;
}
break;
case DisplayOption.VacantSeats:
if (m_nameList[index] == null)
{
strSeatInfoStrings[i] = GetSeatInfoAt(index);

i++;
}
break;
default:
break;
}
}

return i;
}

我知道 NullReferenceException 是什么,但我找不到为什么会得到它。阵列座位应该被填充,如果这是问题所在,方法 GetSeatInfoString 有什么问题?

最佳答案

这一行:

string[] seats = new string[m_seatMngr.GetSeatInfoStrings((SeatManager.DisplayOption)
cmboBoxListAlternitives.SelectedIndex, out seats)];

顺序不清楚,但是这里有两个分配给seats - 第一个通过out,第二个分配给所有nulls(一个新的字符串数组)。试试看:

string[] seats;
m_seatMngr.GetSeatInfoStrings((SeatManager.DisplayOption)
cmboBoxListAlternitives.SelectedIndex, out seats);

只能通过“out”分配。

关于c# - 为什么会出现 NullReferenceException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7776951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com