私は Jeffrey Richter による「CLR 経由の CLR」を読んでいますが、彼は値の型の動作を変更することを意図したメソッドを決して定義しないことを提案しています (ボックス化/ボックス化解除の費用と、時には予測不可能な動作のため)。
では、状態を表示するためだけに、カスタム値型でメソッドを定義できますか?
内でメソッドを定義する機能が必要な他の例を挙げていただけますStruct
か?
私が考えることができる最も良い例はDateTime
構造体です。
型のすべてのインスタンス メソッドはDateTime
、現在のものを操作して新しいものを作成するか (例: AddMinutes
)、現在のものから追加情報を取得するように設計されていますDateTime
(例: IsDaylightSavingsTime
)。また、さまざまな入力から新しいインスタンスを作成するためのさまざまな静的メソッド ( などFromBinary
) や、一般的にDateTime
値を操作するためのさまざまな静的メソッド ( などCompare
)もあります。
現在のインスタンスを実際に変更できるメソッドはありません。