【发布时间】:2019-01-20 18:45:39
【问题描述】:
我想创建一个扩展方法来循环 System.Array 未知数量的维度
目前我使用的是一种幼稚的方法:
public static void ForEach<T>(this Array source, Action<T> action)
{
if(source.Rank == 1)
{
for (int w = 0; w < source.GetLength(0); w++)
{
action((T)source.GetValue(w));
}
}
else if(source.Rank == 2)
{
for (int h = 0; h < source.GetLength(1); h++)
{
for (int w = 0; w < source.GetLength(0); w++)
{
action((T)source.GetValue(h, w));
}
}
}
else if(source.Rank == 3)
{
// etc
}
}
我敢肯定,还有更优雅的方法可以做到这一点。但我想不通。如何将这种方法推广到无限数量的维度?
【问题讨论】:
-
@ChristianGollhardt 在 OOP 语言中使用多维数组有什么“根本错误”?您希望如何在没有多维数组的情况下进行张量操作?
-
看来我误解了你的问题。我把尺寸误认为是尺寸的大小。 @koryakinp
标签: c# loops multidimensional-array system.array