2011-12-14 107 views
1

我有一個運行在Azure上的C#代碼,並且已啓用Web,所以它應該是安全的。這意味着我不能使用指針。如何在不使用指針的情況下模擬指針?

我有這個問題 - 我的數據結構是一個SortedList,其中每個節點是一個對象X.每個對象X包括一個數組,其中每個單元格是另一個對象Y的SortedList。X和Y類型的對象具有不同的ID (所以他們可以搜索當然)。

現在,我需要一種直接獲取Y對象的方法,不需要通過X對象和Y對象進行搜索。 (它可能是數百萬個對象)

在C/C++中,我將使用帶有指向實際對象指針的Y對象ID列表。這種方式我只搜索一次對象。

任何想法如何可以在C#中完成?

謝謝!

+11

C#中沒有指針的原因是*幾乎所有東西都是指針*。如果你說`MyClass p = a [i];`,`p`是一個指針。 `a`是一個指針數組,並且`a [i]`和`p`都指向同一個對象。你不能做的是*指針算術*。 – 2011-12-14 14:06:27

+0

ohh ...所以我可以有一個指針列表。只需將它們聲明爲對象(不需要初始化它們)? – Roman 2011-12-14 14:20:40

+2

http://msdn.microsoft.com/en-us/library/t63sy5hs%28v=VS.100%29.aspx – 2011-12-14 14:29:26

回答

1

只需在C#中使用實例,就像在C++解決方案中一樣,但不包含-> C++指針deref。所有涉及.NET中類類型實例的東西都是對象引用,它們實際上是指針。如果在C#中構造一個類型的實例並將其分配給一個變量和一個數組元素並將其作爲參數傳遞,那麼所有這些都是指向內存中相同對象數據的指針。

不需要模擬C#中的指針。一切已經是一個指針。

0

好吧,你可以嘗試哈希,有Hashtable 類。如果一切都在排序列表中,儘管您可以使用二進制搜索,即使有數百萬條記錄也不會花費那麼長時間。

重新讀你的數據結構的解釋我有這個問題。如果您的初始計劃是單獨存儲所有Y的列表,那麼對象X存儲對象Y的目的是什麼?爲什麼不能存儲X的排序列表,其中每個X包含關聯Y對象的ID的排序列表,並且您有一個單獨的Y對象排序列表?如果有可能在不知道其相關X的情況下搜索Y,那麼您正在創建一個錯誤的數據結構來保存對象。或者你可以創建一個數據庫,並在你需要的時候使用SQL來獲取你需要的數據,如果你有數百萬條記錄,這可能是一個好的途徑。

相關問題