2011-12-14 68 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来获取你需要的数据,如果你有数百万条记录,这可能是一个好的途径。

相关问题