Pla*_*ato 0 c# multidimensional-array
我想将此数据声明为C#的数组:
file1: data1 [rect1] , data2 [rect2] , data3 [rect3]
file2: data1 [rect1] , data2 [rect2]
file3: data1 [rect1] , data2 [rect2] , data3 [rect3], data4 [rect4]
...
Run Code Online (Sandbox Code Playgroud)
文件和数据是字符串,rect是Rectangle对象
它不一定是一个数组,但我认为数组将是最好的解决方案.
我需要访问存储在数组中的数据.
例如,当我给"file1"时,我应该能够读取所有dataX ..
另外,当我给"file1"和"data1"时,我应该能够访问"rect1"..
你能解释我怎么做吗?
您可以将其定义为
Dictionary<string, List<(string Data, Rectangle Rect)>>
Run Code Online (Sandbox Code Playgroud)
(此语法使用c#7.0元组)
但在这种情况下,我觉得更明确的定义会有助于提高可读性.
class RectData
{
public string Data;
public Rectangle Rect;
public RectData(string data, Rectangle rect) { Data = data; Rect = rect; }
}
Run Code Online (Sandbox Code Playgroud)
然后你的数据类型将是一个
Dictionary<string, List<RectData>>
Run Code Online (Sandbox Code Playgroud)
关键在哪里file.
使用a Dictionary假设file密钥是不同的.如果不是,您可以通过定义更进一步
class FileData
{
public string File;
public List<RectData> Data;
}
Run Code Online (Sandbox Code Playgroud)
然后用一个
List<FileData>
Run Code Online (Sandbox Code Playgroud)
更新
初始化可能看起来像
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),
}},
}
Run Code Online (Sandbox Code Playgroud)