如何在c#中声明动态数组
本文关键字:声明 动态 数组 | 更新日期: 2023-09-27 18:07:58
我正在研究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]
,因为位置是一个列表,不能像这样索引。如何索引?
传递pv.Root.Parameter.Count
而不是20
作为数组长度。
string[] position = new string[pv.Root.Parameter.Count];
您可能需要一个"无限"数组。使用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]];
您可以尝试使用Linq:
String[] position = pv.Root.Parameter
.Where(item => name == item.Name)
.Select(item => item.Name)
.ToArray();
如果你想要List<T>
而不是array
List<String> position = pv.Root.Parameter
.Where(item => name == item.Name)
.Select(item => item.Name)
.ToList();