繁体   English   中英

如何声明这样的数组

[英]How to declare an array like this

我希望将此数据声明为C#的数组:

file1: data1 [rect1] , data2 [rect2] , data3 [rect3]
file2: data1 [rect1] , data2 [rect2]
file3: data1 [rect1] , data2 [rect2] , data3 [rect3], data4 [rect4]
...

文件和数据是字符串,而rect是Rectangle对象

它不必是数组,但我认为数组将是最佳解决方案。

我需要访问存储在数组中的数据。

例如,当我输入“ file1”时,我应该能够读取所有dataX。

另外,当我输入“ file1”和“ data1”时,我应该能够访问“ rect1”。

您能解释一下我该怎么做吗?

您可以将其定义为

Dictionary<string, List<(string Data, Rectangle Rect)>>

(此语法使用c#7.0元组

但是在这种情况下,我觉得更明确的定义将有助于提高可读性。

class RectData
{
    public string Data;
    public Rectangle Rect;
    public RectData(string data, Rectangle rect) { Data = data; Rect = rect; }
}

然后您的数据类型将是

Dictionary<string, List<RectData>>

关键是file

使用Dictionary假定file密钥是不同的。 如果不是,则可以通过定义以下步骤进一步

class FileData
{
    public string File;
    public List<RectData> Data;
}

然后使用

List<FileData>

更新资料

初始化看起来像

var myData = new Dictionary<string, List<RectData>>()
{
    { file1, new List<RectData> {
         new RectData(data1, rect1),
         new RectData(data2, rect2),
    }},
    { file2, new List<RectData> {
         new RectData(data3, rect3),
         new RectData(data4, rect4),
    }},
}

我认为您正在寻找的是字典。 请参考此文档以获取更多信息: https : //docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic.dictionary-2?view=netframework-4.7.2

您可以将数据对象声明为:

Dictionary<string, Dictionary<string, Rectangle>> data;

您可以按以下方式访问矩形数据:

var rectangle1 = data[file1][data1];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM