我正在尝试实例化一个二维字符串数组。我的问题是数组的第二个维度并不完全相同,我不知道如何明智地指定这个代码。
这些变量指定电路板。有4块板,每块板都有不同数量的触点。对于每个联系人,都有关于其目的的描述。
int numBoards = 4;
String[] boardNames = {"FirstBoard", "Second Board", "Third Board", "Fourth Board"};
int[] numContacts = { 32, 24, 48, 32 };
String[][] descriptions = new String[numBoards][???];
如何指定descriptions
数组的第二维尺寸不同; numContacts
中指定的尺寸?
这是唯一的方法吗?还是有更优雅的东西?
int numBoards = 4;
String[] boardNames = {"FirstBoard", "Second Board", "Third Board", "Fourth Board"};
int[] numContacts = { 32, 24, 48, 32 };
String[] desc1 = new String[numContacts[0]];
String[] desc2 = new String[numContacts[1]];
String[] desc3 = new String[numContacts[2]];
String[] desc4 = new String[numContacts[3]];
String[][] descriptions = new String[numBoards][];
descriptions[0] = desc1;
descriptions[1] = desc2;
descriptions[2] = desc3;
descriptions[3] = desc4;
答案 0 :(得分:2)
您可以使用对象初始化语法填充数组:
string[][] strings =
{
new[] { "Fred", "Bob" },
new[] { "Anne", "Steve", "John" }
};
如果优雅你的意思是语法明智
答案 1 :(得分:2)
我认为更优雅的解决方案是根本不使用2d数组,而是使用一组Board类。
public class Board {
public Board(String name, int contactCount) {
Name = name;
Contacts = new List<String>(contactCount);
}
public String Name { get; set; }
public List<String> Contacts { get; set; }
...
}
答案 2 :(得分:1)
您可以使用Linq查询生成锯齿状数组:
int[] numContacts = { 32, 24, 48, 32 };
String[][] descriptions = numContacts.Select(c => new string[c]).ToArray();