私は2つのフィールドを含む単純な構造体を持っています。 1つはオブジェクトを格納し、もう1つはDateTimeを格納します。私は辞書にオブジェクトを保存したいのですが、DateTimeスタンプも保存したいので、これを行いました。ヌル可能な構造体対クラス
私は自分の構造体を返すメソッドを持っています。メソッドはnullを返すことができるようになったので、構造体をnullableにしました。私は今、自分の構造をクラスにして参照型にする必要があるのだろうかと思っています。
私は2つのフィールドを含む単純な構造体を持っています。 1つはオブジェクトを格納し、もう1つはDateTimeを格納します。私は辞書にオブジェクトを保存したいのですが、DateTimeスタンプも保存したいので、これを行いました。ヌル可能な構造体対クラス
私は自分の構造体を返すメソッドを持っています。メソッドはnullを返すことができるようになったので、構造体をnullableにしました。私は今、自分の構造をクラスにして参照型にする必要があるのだろうかと思っています。
この場合、はい、あなたの構造をクラスにすることはおそらく明らかです。
正当な理由がある限り、あなたは本質的に特殊なTuple
を作成しています。興味深いのは、ライブラリの設計者が.Net 4 Tuple
を構造体ではなくクラスにすることを選択したことです。 (このページはタプルの作成者であり、さまざまなタプルインスタンスクラスへのリンクです)
実際には(struct
が不変である限り)どちらでも問題はありません。 A DateTime
であり、大きすぎて参照することはできません。
の値(のキーではない)を辞書に使用しているとしますか?キーとして使用する場合、struct
とclass
にかかわらず、Equals
とGetHashCode()
を上書きする必要があります。
タプル<,,,,,,,>(8個の引数)になったときに、主に物事を一貫して保つことが主な目的です - 特にTのどれかが自明でない場合は、構造体としてオーバーサイズされることがほとんどです。 –
@Marc:それは良い点です。タプルが不変であることに気付かなかった。 –