2011-06-23 57 views
0

我對C#相當陌生。在C++中,如果我想要兩個包含部分或全部相同數據的集合,那麼這很容易。例如,您只需在堆上創建對象,並在每個集合中使用一組((自動))指針。 C#似乎沒有指針的概念,所以你如何在C#中做同樣的事情?C#使用兩個包含相同數據的集合

一個集合(可能是一個數組)將包含所有對象。另一個(可能是一個隊列)將包含數組中的一個子集。最終,對象將從隊列中刪除,但仍保留在數組中。

這個,我敢肯定,這是一個非常簡單的問題,但我仍然對C++和C#之間的區別有所瞭解。

+0

只有在不安全模式下,C#纔會有指針 – harryovers

+0

@harryovers。 –

+0

...但通常你不需要使用它們。 –

回答

2

C#有你已經習慣了在C++在不安全的上下文指針。然而,大多數複雜的對象都是通過C#中的引用傳遞的,意思是(簡化)你添加到兩個集合的單個對象將是同一個對象。例如,字符串和整數將是值類型和字符串,將是不可變的。將http://blogs.msdn.com/b/ericlippert/archive/2007/11/13/immutability-in-c-part-one-kinds-of-immutability.aspx


C#有一個垃圾收集器是負責記憶和參照管理的你,和任何孤立引用一般:

更多關於在C#類型:http://msdn.microsoft.com/en-us/library/3ewxz6et.aspx

上不變性冗長的博文在合理的時間內清理乾淨。

更多關於存儲器管理:http://msdn.microsoft.com/en-us/library/f144e03t(v=VS.100).aspx

+0

謝謝你。我現在明白了,實際上現在我明白了,我意識到這是一個愚蠢的問題。所以感謝大家的耐心。 – Jonnster

+0

對於從非託管到託管代碼的用戶來說,這並不愚蠢。 –

2

可能您需要先理解參考和值類型。

http://www.codeproject.com/KB/cs/Types.aspx

+0

我明白這一點。這對C#並不陌生。但是,在我的經驗中,最好避免在C++中使用集合中的引用。有些情況下,使用引用時,事情變得混亂,集合很大程度上無法使用。 C#中的引用與C++中的引用有何不同?在C++中的對象引用列表將是可怕的。 C#會自動進行某種引用計數嗎? – Jonnster

+1

C#有一個垃圾收集器,負責爲您處理內存和引用管理,並且通常會在合理的時間內清除任何孤立的引用。更新我的答案,包括這個珍聞。 =) –

0

在C#的數據是通過默認referenced(未複製,除非它是一個struct(值類型)),因此,如果在一個位置與另一個對象分配可變它是一個創建的參考。

實施例:

class C {} 
var a = new C(); 
var b = a; 
//a and b points to the same object 

反正可以使用在C#指針在unsafe上下文(儘管不推薦)。

0

幾乎C#中的所有對象都是在堆上構建的,並且可以通過指針訪問。在C++中使用.幾乎與->一樣。恕我直言,它只是更自然地工作。

思考「指針」時,集合不包含數據,它引用數據。

所以在你的例子中,它只會像你描述的那樣工作。

相關問題