2011-12-04 34 views
0

我對CLI比較新,我需要保留一個int值的數組,它需要是可擴展的(動態的)。 ArrayList不喜歡int,因爲它不是「對象」。CLI中整數的動態數組

什麼是持有整數或雙打的ArrayList等價物?

編輯:哦,上帝​​。我今天離開了比賽。它對int沒有問題。當我索引數組時,我只需要將它轉換爲int。對不起,浪費你的時間...

+0

你可以使用Integer類嗎? – slugonamission

+0

在CLI中看起來沒有Integer類。我嘗試使用UInt32,它的工作原理。所以,謝謝你指點我正確的方向!發表一個實際的答案,所以我可以給你一個凹凸。 – Jin

回答

1

這個問題似乎太開放了。我可以回答的最好的是你可以使用通用列表(System.Collections.Generic.List)或將整數框填充,在這種情況下,它們將充當對象。你在寫IL嗎?一個編譯器?

+0

ArrayList是我嘗試使用的可擴展數組類。如果我嘗試添加一個int到一個ArrayList,我得到一個編譯器錯誤。建議使用Int32而不是int工作。這不是一個好辦法嗎?有很多開銷嗎?這不是一個編譯器,但速度是有用的關鍵。然而,這是一個原型,所以我可能會將它直接移植到C++中以獲得速度(並將其封裝在CLI中),因此速度現在不是我主要關心的問題。你說的不同嗎? – Jin

+0

int和Int32完全相同。 C#編譯器只是使用int作爲別名。如果你看着裝配,他們會是一樣的。只是讓你知道前進;) –

0

正如我所問,使用INT的「類」形式之一,如UInt32或Int32。我很確定約翰的回答比這個更好,但是從內存中,工作正常。

+0

INT只是Int32的別名。 .Net中沒有「class」形式的整數,就像在Java中一樣。相反,值類型(分配的堆棧)通過名爲「裝箱」的進程移動到堆中。例如,如果您鍵入'object o = 3;',則值3將被自動裝盒並放置在堆上。稍後,如果將其轉換爲int('(int)o'),則它將被拆箱。 –

1

你需要

System.Collections.Generic.List<int> 

有在C++中的 「可擴展陣列」 沒有這樣的事。

+0

Meant託管C++是不是現在專門調用CLI? – Jin

+0

@Dedic:關於C#的錯字,但相同的答案 - 您需要使用'List '。 – Mehrdad

+0

你不需要,但這會更高效,讓你的生活更輕鬆。 –