2012-09-26 50 views
0

我想在我的數組中使用行和列移除方法。因此,我想將我的陣列轉換爲ArrayList以使用RemoveAt(int index)方法,但在使用.NET 4.5的Windows 8應用程序中沒有ArrayList。你能否給我一個建議,如何將我的簡單int[,]數組轉換爲另一種類型,它具有行和列刪除方法?Windows 8中的ArrayList的後繼Metro應用程序C#

+4

List有什麼問題嗎?我認爲沒有真正的優勢,首先使用ArrayList。 –

+0

@Yuck活在.NET 4.5中,但不在框架的WinRT子集中:http://blogs.microsoft.co.il/blogs/sasha/archive/2011/09/15/winrt-and-net -in-windows-8.aspx(請參閱圖片上方的段落)。 – phoog

回答

2

你可以只使用一個列表的列表:

List<List<int>> array = new List<List<int>>(); 

而且如下

for (int i = 0; i < orig_array.Length, i++) 
{ 
    array.Add(new List<int>(orig_array[i])); 
} 

使用這種方法進行初始化,array.RemoveAt(row)將消除一整行,而array[row].RemoveAt(col)將刪除元素。

編輯:由於phoog所示,上述的初始化將需要被修改聲明爲INT數組[,],如下所示:

for (int row = 0; row < orig_array.GetLength(0), row++) 
{ 
    array.Add(new List<int>()); 
    for (int col = 0; col < orig_array.GetLength(1); col++) 
    { 
     array[row].Add(orig_array[row, col]); 
    } 
} 

的優勢,使用交錯數組(而不是一個矩形陣列)在這種情況下是能夠訪問整行,而不需要顯式循環的值。

+1

如果源是「int [] []」,這將工作,但如果是「int [,]」,則不會如問題中所示。 – phoog

+0

好點,謝謝!更新答案以反映它。 – dckrooney

0

ArrayList以及從WinRT中刪除的所有非泛型集合。此鏈接here將幫助您替換arraylist。

相關問題