给定一个对象的属性是对象数组,如何在 C# 中设置该属性的特定实例?[复制]

Given an object with a property that is an array of objects, how does one set a specific instance of said property in C#? [duplicate]

提问人:exaudio 提问时间:1/25/2017 更新时间:1/25/2017 访问量:26

问:

我有两个对象:“Table”和“Record”。“Table”具有属性“Items”,该属性是“Record[]”类型的数组。

如何设置“Table”的特定实例的“Items”属性(例如,table.Items[0]) 添加到“Record”的特定实例(例如,first_record)?

我尝试按如下方式对其进行编码,但我的代码导致“NullReferenceException 未处理”错误。

Record first_record = new Record();
first_record.Field1 = "r1f1";
first_record.Field2 = "r1f2";
first_record.Field3 = "r1f3";

Record second_record = new Record();
second_record.Field1 = "r2f1";
second_record.Field2 = "r2f2";
second_record.Field3 = "r2f3";

Table table = new Table();
table.Items[0] = first_record;
table.Items[1] = second_record;

谢谢

C# 数组 对象 属性 NullReferenceException

评论

0赞 Alexei Levenkov 1/25/2017
请仔细阅读最小的可重现示例指南,以使您未来的问题变得更好 - 在这种情况下,每个人都知道您没有初始化数组属性,但在其他情况下,缺乏实际演示问题的代码可能会为您赢得一堆反对票。
0赞 exaudio 1/25/2017
@Abion47,我知道我显然不是一个专业的程序员。但是,我相信我在问题中提供的代码确实说明了问题。我把更正后的代码放在我为自己的问题提供的答案中。
0赞 exaudio 1/25/2017
@Abion47,我应该补充一点,在我的回答中,我确实链接到了一个类似的问题,帮助我解决了自己的问题。虽然我的问题对于有经验的编码人员来说可能是微不足道的,但我不认为它是其他问题的完全重复。
0赞 Alexei Levenkov 1/25/2017
请像某个随机的人一样阅读帖子 - 您会注意到没有关于类型的信息(即使它是类或结构,绝对没有构造函数),用于创建具有额外字段的多个实例的不相关代码 - 基本上没有办法实际重现问题。此外,作者也没有特定例外进行研究。在这一点上,您可能想知道为什么帖子没有因为缺乏信息而获得很多反对票,并且没有因“缺少最小代码”而被关闭。TableRecord
0赞 exaudio 1/25/2017
@Abion47,感谢您的反馈。

答:

0赞 exaudio 1/25/2017 #1

Stackoverflow 提出了一个类似的问题,为我提供了答案。我无法初始化数组。这是我错过的那一行:

table.Items = new Record[2];

将该行插入到我原始问题的代码中会导致以下内容:

Record first_record = new Record();
first_record.Field1 = "r1f1";
first_record.Field2 = "r1f2";
first_record.Field3 = "r1f3";

Record second_record = new Record();
second_record.Field1 = "r2f1";
second_record.Field2 = "r2f2";
second_record.Field3 = "r2f3";

Table table = new Table();
table.Items = new Record[2];
table.Items[0] = first_record;
table.Items[1] = second_record;

这成功了。谢谢 Stackoverflow!