我想使用2-D阵列但我不能提前知道它的大小。所以我的问题是:如何申报?然后如何在其中添加值?
String[,] tabConfig = new String[?, 4];
foreach(blabla with i)
{
tabConfig[i, 0] = a;
tabConfig[i, 1] = b;
tabConfig[i, 2] = c;
tabConfig[i, 3] = d;
}
我知道我也可以使用列表,但我对它不是很熟悉。
谢谢!
编辑:支持你自己!在Jon Skeet的帮助下,我的真实代码就来了!List<string[]> tabConfig = new List<string[]>();
String[] temp = new String[4];//The array that will be inside the List
int line = 0, column = 0;
foreach (XmlNode e in doc.DocumentElement.ChildNodes)
{
if (e.Attributes["Server"].Value == choice)
{
temp[0] = e.Attributes["Serveur"].Value;//Here is value 'a'
column = 1;
foreach (XmlNode i in e.ChildNodes)
{
temp[colonne] = i.InnerText;//Here are values 'b', 'c' and 'd'
column++;
}
tabConfig.Add(temp);//Put a new line into the List
line++;
}
}
并称之为:
foreach(string[] array in tabConfig)
foreach(String txt in array)
Console.WriteLine(txt);
答案 0 :(得分:11)
所以我的问题是:如何申报?
你做不到。 .NET中的所有数组都是固定大小的:如果不知道大小,就无法创建数组实例。
在我看来你应该有一个List<T>
- 我实际上创建了一个类来保存这四个属性,而不是仅仅使用一个数组的四个元素。您可以使用数组列表:
List<string[]> tabConfig = new List<string[]>();
foreach (...)
{
tabConfig.Add(new string[] { a, b, c, d });
}
...但是你需要知道这四个元素在排序等方面意味着什么,这可能会让你的其他代码更难理解。
答案 1 :(得分:3)
您可以使用
List<List<string>>
为此,不是吗?
答案 2 :(得分:2)
你可能更喜欢使用类似
的字典IDictionary<string, IList<TYPE>> myContainer = new Dictionary<string, List<TYPE>>();
myContainer.Add("key1", new List<TYPE>());
myContainer["key1"].Add("SomeTYPE-1");
myContainer["key1"].Add("SomeTYPE-2");
myContainer["key1"].Add("SomeTYPE-3");
myContainer.Add("key2", new List<TYPE>());
myContainer["key2"].Add("A");
myContainer["key2"].Add("B");
myContainer["key2"].Add("C");
<强>更新强> 正如@jon评论的那样,如果您想通过某种形式的密钥访问二维数组的元素,则可以使用字典,这在您的情况下可能/可能没用。如果你不想要一个基于密钥的字典,那么坚持使用@jon发布的内容。
答案 3 :(得分:1)
如果你可以做一个foreach,你可以知道它的大小。如果您知道尺寸,可以创建具有必要尺寸的aray。
但我会使用List。这种情况更友好。
答案 4 :(得分:1)
解决方法:
private struct MyStruct
{
int x;
int y;
}
List<MyStruct> myList = new List<MyStruct>();
答案 5 :(得分:1)
制作一个这样的课程
public class MyClass
{
public string one{get;set;}
public string two{get;set;}
}
现在您可以列出此对象的列表,如
List<MyClass> list1=new List<MyClass>();
答案 6 :(得分:1)
如果我是你,我会把你正在迭代的列表的长度作为数组大小,因为数组必须用固定大小声明