【发布时间】:2015-06-18 22:49:05
【问题描述】:
我的 c# 脚本有问题。我想创建一个字符串表列表,如下所示:
public List<string[]> Signals = new List<string[]>();
public string[] Communication = new string[3];
所以它应该看起来像这样,我的列表中应该有几个 Communication 实例:Signals = (Communication1, Communication2, ...) 并且每个 Communication 有 3 个字符串字段。
当我收集了我的 3 个通信数据时(每次通信都不同):
Communication[0]=CommunicationType;
Communication[1]=CommunicationTime;
Communication[2]=CommunicationName;
我将它们存储到我的列表中:
Signals.Add(Communication); // I have also tried .Insert with different Indexes
当我这样做了几次,储备了 6 个不同的通信表时,我想最终看到我的每一个通信实例,所以我这样做:
foreach (string[] Signal in Signals)
{
foreach (string CommunicationUnit in Signal)
{
Print(CommunicationUnit);
}
}
我所看到的输出是列表中最后一个元素的 6 倍,如下所示
ARINC3
121us
Comm6
ARINC3
121us
Comm6
ARINC3
121us
Comm6
ARINC3
121us
Comm6
ARINC3
121us
Comm6
ARINC3
121us
Comm6
当我认为我会看到列表中的每个元素实际上是 6 个不同的字符串表时。
我不明白我的脚本有什么问题。我认为错误出在 foreach 循环的某个地方。
【问题讨论】:
-
使用类而不是
string[]。 -
我的心理调试技能告诉我,您正在为所有 6 个重复使用相同的
Communication数组,因此它们都显示最后的数据,因为它们共享相同的引用。您最好按照其他人的建议创建一个类来为您的数据结构建模。 -
您没有显示有问题的代码。显示使用通信数组填充信号列表的完整代码。当你这样做时,很明显你没有为每个 List 元素创建一个新数组。相反,您会一遍又一遍地使用对同一数组的引用来填充列表。
标签: c#