我正在阅读Jeffrey Richter的“CLR via C#”,他建议永远不要在值类型中定义旨在改变它的行为的方法因为值类型应该是不可变的(因为装箱/拆箱费用,有时候是不可预测的行为) )。
那么,我们可以在自定义值类型中定义方法,仅用于显示它的状态吗?
您是否可以提供其他需要在Struct
内定义方法的能力的示例?
答案 0 :(得分:4)
我能想到的最好的例子是DateTime
结构。
该类型上的所有实例方法都旨在通过操纵当前的DateTime
来创建新的AddMinutes
,或者从当前DateTime
获取其他信息(例如{{1} }})。它还有各种静态方法,用于从各种输入创建新实例(例如IsDaylightSavingsTime
)或通常操纵FromBinary
值(例如DateTime
)
没有方法可以实际修改当前实例。