如何在不使用指针的情况下模拟指针?

时间:2011-12-14 13:59:48

标签: c# c data-structures pointers

我有一个在Azure上运行的C#代码并且已启用Web,因此它应该是安全的。这意味着我不能使用指针。

我遇到了这个问题 - 我的数据结构是一个SortedList,其中每个节点都是一个对象X.每个对象X包括一个数组,其中每个单元格是对象Y的另一个SortedList.X和Y类型的对象具有不同的ID(所以它们当然是可搜索的。)

现在,我需要一种直接获取Y对象的方法,而不需要通过X对象和Y对象进行搜索。 (对象上可能有数百万)

在C / C ++中,我使用了一个Y对象ID列表,其中包含指向实际对象的指针。这种方式我只搜索一次对象。

如何在C#中实现这一目标?

谢谢!

2 个答案:

答案 0 :(得分:1)

只需在C#中使用实例,就像在C ++解决方案中一样,但没有-> C ++指针deref。在.NET中引用类类型实例的所有东西都是对象引用,实际上是指针。如果在C#中构造一个类型的实例并将其分配给变量和数组元素并将其作为参数传递,则所有这些都是指向内存中相同对象数据的指针。

无需在C#中模拟指针。一切都已成为指针。

答案 1 :(得分:0)

你可以尝试哈希,有Hashtable 类。如果所有内容都在排序列表中,您可以使用二进制搜索,即使数百万条记录也不会花费那么长时间。

重读您对数据结构的解释我有这个问题。如果您的初始计划是分别存储所有Y的列表,那么对象X存储对象Y的重点是什么?为什么你不能存储一个X的排序列表,其中每个X包含一个关联Y对象的ID的排序列表,你有一个单独的Y对象排序列表?如果它可以在不知道其相关X的情况下搜索Y,那么您正在创建一个错误的数据结构来保存对象。或者你可以创建一个数据库并使用SQL来获取你需要的东西,如果你有数百万条记录可能是一个很好的方法。