gpt4 book ai didi

c# - 在数组中使用 Person 类

转载 作者:太空宇宙 更新时间:2023-11-03 19:06:02 24 4
gpt4 key购买 nike

您好,我有以下问题:

我正在创建一个包含 Person 对象数组的程序。

aantalpersonen = int.Parse(tbArray.Text); // aantal te creëren items in array;

if (aantalpersonen > 5 || aantalpersonen <= 1)
throw new ArgumentOutOfRangeException();
else
{
Persoon[] personenLijst = new Persoon[aantalpersonen];
foreach (Persoon persoon in personenLijst)
{
Persoon pers1 = new Persoon();
}
}

在调试中观察这个给我 = 一个新的数组,其中包含用户定义的人数,一个包含人数的整数。在其他一些代码行中,我得到一个整数,其中包含当前选择(编辑)的人。所有这一切都很好,但是当我尝试将数据添加到我的每个人的属性时,我遇到了问题。

private void btnUpdateData_Click(object sender, RoutedEventArgs e)
{
personenLijst[huidigpersoon - 1].Naam = tbNaam.Text;
personenLijst[huidigpersoon - 1].Gewicht = int.Parse(tbGewicht.Text);
personenLijst[huidigpersoon - 1].Lengte = int.Parse(tbLengte.Text);
personenLijst[huidigpersoon - 1].Geboortedatum = dpGeboorte.SelectedDate.GetValueOrDefault(DateTime.Today);
}

这给了我以下错误:

System.NullReferenceException was unhandled HResult=-2147467261 Message=Object reference not set to an instance of an object.

我的第一个问题是我必须使用用户选择的人数来具体声明每个人。但是我不知道我应该怎么做,即使我能做到,我怎么能确保 personclass 的每个实例都有不同的名称,例如 persoon1,persoon2 ..

最佳答案

您已声明数组包含指定数量的 Persoon 对象,但尚未将数组的任何元素设置为实际的 Persoon 实例。
所以你不能使用不存在的东西

aantalpersonen = int.Parse(tbArray.Text); 

if (aantalpersonen > 5 || aantalpersonen <= 1)
throw new ArgumentOutOfRangeException();
else
{
Persoon[] personenLijst = new Persoon[aantalpersonen];
for( int x = 0; x < personenLijst.Length ; x++)
{
personenLijst[x] = new Persoon();
}
}

之后,您的数组将充满 Persoon 类的实例,您可以更改各个实例的属性。但是,正如 Holterman 先生在下面的评论中指出的那样,该数组在此代码片段中被声明为局部变量,因此它在您尝试更改各个属性的事件处理程序中不可用(不在范围内)。要解决此问题,应在全局级别声明数组。

 Persoon[] personenLijst = null;

并用

初始化
 personenLijst = new Persoon[aantalpersonen];

这么说,为什么你仍然使用数组而不是更通用的 List<Persoon>

关于c# - 在数组中使用 Person 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27468796/

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