2012-04-01 10 views
1

C# XNA Xbox, in this case optional parameters are not optionalC#XNA XboxのHashSetのタプル

オプションのパラメータは、今働いて、または、彼らは動作するはずかのように、少なくとも表示されている上記の質問からの助けに感謝します。

しかし、私は現在、ハッシュセットとタプルに固執していますが、利用できないようです。

私は両方のクラスの自分のバージョンを書くことができました。タプルはゼロから、ハッシュセットはディクテーション(恐らく)を使用します。しかし、私はむしろ標準のものを使い続けるだろう。

これらのクラスがライブラリのPC版に存在する場合、PC C#ライブラリからコピーして自分のコードに貼り付けることはできますか?

"Go To Definition"を使用すると、 "HashSet [metadata from]"となり、クラスインタフェースを示していますが、実装されていないようなC++ヘッダファイルです。

はここに続き:ありstackoverflow.com/questions/10246572/c-sharp-hashset2-to-work-exactly-like-the-standard-c-sharp-hashset-not-compilin

+0

MicrosoftはXNAのバイナリでデバッグシンボルをリリースしないため、実装が表示されません。さもなければ、彼らはXNAのソースコードをすべて遠ざけてしまいます。コードには、名前、型、属性など、コードは全く同じですが、コードはありません。プライベートメンバーはありません。 – Elideb

答えて

2

あなたは自分自身作ることができ、両方の非常に基本的なデータ構造を。

Here is a HashSet.

そして、ここでタプルは、必要に応じてちょうどより多くの項目を追加しています。

public class Tuple<T1, T2> 
{ 
    public T1 Item1 { get; set; } 
    public T2 Item2 { get; set; } 

    public Tuple(T1 item1, T2 item2) 
    { 
     Item1 = item1; 
     Item2 = item2; 
    } 
} 
+0

上記にリンクされているHashSetの実装は、未使用の値をたくさん格納することを意味します。おそらく、使用したUInt16の代わりにboolを使用することで否定できます。組み込みのタプルはこのように実装されていますか? "public T1 Item1 {get; set;}"はプロパティの定義のように見えますが、データはどこに保存されていますか?また、元のHashSet定義をコピーすると、Dictionaryを使用して別の抽象レイヤーを作成するよりも優れたパフォーマンスを発揮するようです。私は通常気にしませんが、それは異常に性能が重視される状況で使用することができます。 – alan2here

+1

HashSetは、常に未使用の値をたくさん格納しています。スペースが重要な場合は、キーを格納する辞書を使用して他のものを構築してください。 '{get; set;}'は[auto-implementedプロパティ](http://msdn.microsoft.com/en-us/library/bb384054.aspx)です。 –

+0

ありがとう、自動実装されたプロパティが便利になるでしょう。 ClassicThunderのTupleは、バニラのC#タプルよりも楽しく変わるようです。私はまだ考えていない他のものと同様に、それを実装しなければならないと思われます。私はHashSetが、物事を壊さないように十分に似たインターフェースを持っていることが分かったことを願っています。なぜ私はバニラのものをコピーできないのかわかりません。ソリューションエクスプローラ "Program Files¥Reference Assemblies¥Microsoft¥Framework¥.NETFramework¥v4.0¥Profile¥Client¥System.Core.dll"を使用してプロジェクトに新しい参照を追加するとどうなりますか? – alan2here

1

いいえ、あなたはPCのバイナリを取得し、Xboxの上でそれらを使用することはできません。それらは異なるハードウェア用にコンパイルされ、XNA X360プロジェクトはPC dllの使用を拒否します。

これらのクラスには、おそらくいくつかの実装があります。私はCodePlexの多くの物理学とエンジンプロジェクトがそれらを既に持っていると確信しています。そしてそれらを選ぶことは完全に合法です(認識は常に推奨されますが)。

+0

この情報をありがとう。 – alan2here