在 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);
关于c# - 如何搜索多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6084940/