我正在使用.NET“ ValueTuple” NuGet软件包,以供参考。我想知道如何在元组中初始化某个大小的数组(出于我的目的,为4)。
我想做的是:我有4种需要查询和获取数据的硬件。我想从每个设备中获取15个数据点,所以我想到了一个具有以下结构的元组数组:(dataPoint,hardwareValueForDataPoint [4])将是最好的方法。
我尝试了以下方法:
(string, string[]) [] responses = new (string, string[4]);
以及:
(string, string[4]) [] responses;
不起作用。
最理想的情况是,我想有一个元组数组,其中每个元素都将包含2个组成部分:一个字符串和一个由4个元素组成的字符串数组。如果没有那么复杂的方法,请告诉我!
答案 0 :(得分:2)
根据您的编辑,这是我想出的:
(string dataPoint, string[] hardwareValueForDataPoint)[] responses =
new (string dataPoint, string[] hardwareValueForDataPoint)[15];
responses[0].hardwareValueForDataPoint = new string[4];
...
正如注释中的错误反射所指出的那样,这不会强制hardwareValueForDataPoint
数组的长度。如果您需要这样做,则可能需要考虑以下内容:
class HardwareItem
{
public string DataPoint { get; set; }
public string[] HardwareValuesForDataPoint { get; } = new string[4];
}
// then use it elsewhere like this...
var hardwareItems = new HardwareItem[15];
与前一个解决方案相比,该解决方案为您提供了更大的灵活性和控制力(至少对于我来说是可读性)。