我正在研究silverligth5
(我之前的经验是c ++),我必须创建一个动态数组的动态数组。
直到我拥有一切静止的东西,就像这样:
string[] position = new string[20]; //it must be dynamic I don't want to fix it to 20
for (int i = 0; i < pv.Root.Parameter.Count; i++)
{
if (name == pv.Root.Parameter[i].Name)
{
position[i] = name;
}
}
可以看出,我的方式只有20
,我希望它的长度只有pv.Root.Parameter.Count
。
如何实现这一目标?
编辑/当我尝试通过列表实现它时的问题:我在这一行遇到问题:
if (pv.Root.Parameter[loopCount].Name == position[loopCount])
{
rowGrid.Opacity=0.3;
}
因为肯定它不起作用position[loopCount]
因为position是List而且不能像这样索引。如何索引?
答案 0 :(得分:7)
传递pv.Root.Parameter.Count
而不是20
作为数组长度。
string[] position = new string[pv.Root.Parameter.Count];
如果您不想要固定尺寸,请使用list。
答案 1 :(得分:4)
你可能想要一个“无限”数组。
使用List
代替数组。
在你的情况下:
List<string> positions = new List<string>();
for (int i = 0; i < pv.Root.Parameter.Count; i++)
{
if (name == pv.Root.Parameter[i].Name)
{
positions.Add(name); //To get an element use positions.ElementAt(<index>)
}
}
或者,如果您需要使用n个元素的数组:
string[] position = new string[pv.Root.Parameter.Count]];
答案 2 :(得分:4)
您可以尝试使用 Linq :
String[] position = pv.Root.Parameter
.Where(item => name == item.Name)
.Select(item => item.Name)
.ToArray();
或者如果你想要List<T>
而不是数组
List<String> position = pv.Root.Parameter
.Where(item => name == item.Name)
.Select(item => item.Name)
.ToList();