如何在元组中初始化特定大小的数组

时间:2019-07-03 17:24:30

标签: c#

我正在使用.NET“ ValueTuple” NuGet软件包,以供参考。我想知道如何在元组中初始化某个大小的数组(出于我的目的,为4)。

我想做的是:我有4种需要查询和获取数据的硬件。我想从每个设备中获取15个数据点,所以我想到了一个具有以下结构的元组数组:(dataPoint,hardwareValueForDataPoint [4])将是最好的方法。

我尝试了以下方法:

(string, string[]) [] responses = new (string, string[4]);

以及:

(string, string[4]) [] responses;

不起作用。

最理想的情况是,我想有一个元组数组,其中每个元素都将包含2个组成部分:一个字符串和一个由4个元素组成的字符串数组。如果没有那么复杂的方法,请告诉我!

1 个答案:

答案 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];

与前一个解决方案相比,该解决方案为您提供了更大的灵活性和控制力(至少对于我来说是可读性)。