2009-06-12 19 views
13

私は2つのフィールドを含む単純な構造体を持っています。 1つはオブジェクトを格納し、もう1つはDateTimeを格納します。私は辞書にオブジェクトを保存したいのですが、DateTimeスタンプも保存したいので、これを行いました。ヌル可能な構造体対クラス

私は自分の構造体を返すメソッドを持っています。メソッドはnullを返すことができるようになったので、構造体をnullableにしました。私は今、自分の構造をクラスにして参照型にする必要があるのだろうかと思っています。

答えて

10

この場合、はい、あなたの構造をクラスにすることはおそらく明らかです。

正当な理由がある限り、あなたは本質的に特殊なTupleを作成しています。興味深いのは、ライブラリの設計者が.Net 4 Tupleを構造体ではなくクラスにすることを選択したことです。 (このページはタプルの作成者であり、さまざまなタプルインスタンスクラスへのリンクです)

+3

タプル<,,,,,,,>(8個の引数)になったときに、主に物事を一貫して保つことが主な目的です - 特にTのどれかが自明でない場合は、構造体としてオーバーサイズされることがほとんどです。 –

+0

@Marc:それは良い点です。タプルが不変であることに気付かなかった。 –

6

実際には(structが不変である限り)どちらでも問題はありません。 A DateTimeであり、大きすぎて参照することはできません。

の値のキーではない)を辞書に使用しているとしますか?キーとして使用する場合、structclassにかかわらず、EqualsGetHashCode()を上書きする必要があります。

+0

ええ、キーではなく値として使用していますので、これらのメソッドをオーバーライドしています。 – Charlie

+1

(多分私はそれをうまく表現しなかったかもしれません...それらの方法はキーとして使用されたときに重要です[このコンテキストでは] –

+0

はい、私は理解しています。つまり、クラスをキーとして使用している場合は、ここの回答のいずれかで説明されているように、http://stackoverflow.com/questions/689940/hashtable-with-multidimensional-key-in-c – Charlie

関連する問題