2011-12-14 9 views
1

私はAzure上で動作するC#コードを持っており、Web対応で安全です。つまり、私はポインタを使用することはできません。ポインタを使わずにポインタをシミュレートする方法はありますか?

私のデータ構造は、各ノードがオブジェクトXであるSortedListです。各オブジェクトXは、各セルが別のオブジェクトYのSortedListである配列を含みます.XとYのオブジェクトは、 (彼らはもちろん検索可能です)。

ここでは、XオブジェクトとYオブジェクトを検索することなくYオブジェクトに直接アクセスする方法が必要です。

C/C++では、実際のオブジェクトへのポインタを持つYオブジェクトIDのリストを使用したいと思います。そのようなやり方では、私はそのオブジェクトに対して一度だけ検索します。

これはC#でどのように達成できるのでしょうか?

ありがとうございます!

+11

C#でポインタがないのは*ほとんどすべてがポインタ*です。 'MyClass p = a [i];'と言うと、 'p'はポインタです。 'a'はポインタの配列であり、' a [i] 'と' p'は同じオブジェクトを指しています。あなたがすることができないものは*ポインタ演算*です。 –

+0

ohh ...私はポインタのリストを持つことができます。それらをオブジェクトとして宣言するだけです(初期化せずに)? – Roman

+2

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

答えて

1

あなたのC++ソリューションと同じで、ただし、-> C++ポインタのderefがないインスタンスをC#で使用してください。 .NETでクラス型のインスタンスを参照するものはすべてオブジェクト参照であり、実際にはポインタです。 C#で型のインスタンスを構築し、それを変数と配列要素に代入して引数として渡すと、それらはすべてメモリ内の同じオブジェクトデータへのポインタになります。

C#でポインタをシミュレートする必要はありません。すべてが既にポインタです。

+0

ありがとう:)それは私が探していた答えです! – Roman

0

よくハッシュを試してみると、Hashtable クラスがあります。バイナリ検索を使用することはできますが、数百万のレコードでさえそれほど長くはかかりませんが、すべてがソートされたリストにあれば。

あなたのデータ構造についてのあなたの説明を読み返すことは私にはこの質問があります。最初の計画がすべてのYのリストを別々に保存する場合は、オブジェクトXがオブジェクトYを格納するポイントは何ですか?各Xに関連するYオブジェクトのIDのソートされたリストが含まれていて、Yオブジェクトの別々のソートされたリストがある場合、ソートされたXのリストを格納できないのはなぜですか?関連するXを知らずにYを検索することが可能な場合は、オブジェクトを保持するための不正なデータ構造を作成しています。または、データベースを作成してSQLを使用して、必要なときに必要なものを取得することができます。これは、おそらく数百万のレコードがあればよいでしょう。

+0

さて、HashTableの問題は、いくつかの操作(主にLOT操作)後に大きくする必要があることです。データが非常に動的であり、毎回新しいHashTableを作成してから実際に悪い結果になる可能性があります。 SQLについて - すべてのデータはSQLに格納されています。リアルタイムのデータクエリが必要なので、データ構造はキャッシュ用です。 SQLは、私が必要とすることはしません。 私はそれを逆にすることができます - すべてのYオブジェクトをソートされたリストに格納し、そのオブジェクトへのポインタをXオブジェクトに格納します。同じように聞こえます。 – Roman

関連する問題