在C#中,
Array.Find<T>(arrayName, value);
搜索一维数组。有没有办法对多维数组(例如myArray[,,]
)进行这样的操作?
在C#中,
Array.Find<T>(arrayName, value);
搜索一维数组。有没有办法对多维数组(例如myArray[,,]
)进行这样的操作?
在使用Excel和VSTO时,我经常处理多维数组。与Array.Find()不同的是,没有针对多维数组的内置函数。
基本上你有两个选择:创建自己的帮助方法并在其中实现通用搜索模式,或生成与多维数组内容相关联的域对象列表。我个人倾向于选择后者。
如果您选择编写帮助方法,它可能看起来像这样(非常粗略):
// you could easily modify this code to handle 3D arrays, etc.
public static class ArrayHelper
{
public static object FindInDimensions(this object[,] target,
object searchTerm)
{
object result = null;
var rowLowerLimit = target.GetLowerBound(0);
var rowUpperLimit = target.GetUpperBound(0);
var colLowerLimit = target.GetLowerBound(1);
var colUpperLimit = target.GetUpperBound(1);
for (int row = rowLowerLimit; row < rowUpperLimit; row++)
{
for (int col = colLowerLimit; col < colUpperLimit; col++)
{
// you could do the search here...
}
}
return result;
}
}
object[,] myArray = GetMyArray(); // gets an array[,]
myArray.FindInDimensions(someObject);
没有内置的多维搜索功能。您需要自己编写。
将多维数组展平,然后使用Array.Find
。
O(维度1 * 维度2 * ... * 维度n)
的搜索,那么在选择算法和数据结构时可能出现了严重的错误。 - user395760