如何在C#中从多维数组中提取单个数组?有什么捷径可做吗?
for (int i = 0; i < 50; i++)
{
HUYArrayEnd[i] = HUYArray[500, 0, i];
}
HUYArrayEnd = Enumerable.Range(0, 50).Select(x => HUYArray[500, 0, x]).ToArray();
工作示例:
int[,,] HUYArray = new int[501,501,501];
int[] HUYArrayEnd;
for(int i=0;i<501;i++){
for(int j=0;j<501;j++){
for(int k=0;k<501;k++){
HUYArray[i,j,k]=i+j+k;
}
}
}
HUYArrayEnd = Enumerable.Range(0, 50).Select(x => HUYArray[500, 0, x]).ToArray();
如果要从索引[500,0,*]中获取所有元素,则可以使用
HUYArrayEnd = Enumerable.Range(0, HUYArray.GetLength(2))
.Select(x => HUYArray[500, 0, x])
.ToArray();
void Foo(int[] input)
{
for (var i = 0; i< 50; i++)
Bar(input[i]);
}
您正在这样称呼它:
for (int i = 0; i < 50; i++)
{
HUYArrayEnd[i] = HUYArray[500, 0, i];
}
Foo(HUYArrayEnd);
然后您可以用部分函数替换array参数:
void Foo(Func<int,int> input)
{
for (var i = 0; i< 50; i++)
Bar(input(i));
}
然后像这样传递它:
Foo(i => HUYArray[500,0,i]);
此解决方案消除了分配和复制阵列的需要。