更新:作爲喬恩斯基特正確地指出,這並不非p將參考提供給該行,而是創建新副本。如果您的代碼需要更改一行,此方法不起作用。我已經重新命名了這個方法來說明這一點。
更新2:如果你想能夠編輯的字段,並且有變化發生在父陣列,也可以使用包裝我this library I maed提供。結果行foo.Row(i)
不是數組,而是實現IList
,所以如果您需要需要來傳遞數組,這也不是解決方案。
此擴展方法將允許您爲行查詢多維數組。應該注意的是,這是計算量很大(不是有效),如果有可能您應該對這些情況使用鋸齒陣列。但是,如果您發現自己處於不能使用鋸齒狀陣列的情況,這可能會有用。
public static T[] CopyRow<T>(this T[,] arr, int row)
{
if (row > arr.GetLength(0))
throw new ArgumentOutOfRangeException("No such row in array.", "row");
var result = new T[arr.GetLength(1)];
for (int i = 0; i < result.Length; i++)
{
result[i] = arr[row, i];
}
return result;
}
你的代碼可以改寫:
int[,] foo;
foo = new int[6,4];
int[] least;
least = new int[6];
for(int i = 0; i < 6; i++)
{
least[i] = FindLeast(ref foo.CopyRow(i));
}
我可以將矩形數組傳遞給接受鋸齒狀數組的函數嗎? – CodeKingPlusPlus 2012-03-06 19:13:00
@CodeKingPlusPlus:不,你不能 – BlackBear 2012-03-06 19:22:34
所以基本上這不是一個解決方案:) – 2014-05-02 13:37:25