我正在阅读 Jeffrey Richter 的“CLR via C#”,他建议永远不要在值类型中定义旨在改变其行为的方法,因为值类型应该是不可变的(因为装箱/拆箱费用以及有时不可预测的行为)。
那么,我们可以在自定义值类型中定义方法仅用于显示它的状态吗?
你能举出其他Struct
需要在 a 中定义方法的例子吗?
我能想到的最好的例子就是DateTime
结构体。
DateTime
类型上的所有实例方法都旨在通过操作当前方法(例如)或从当前方法(例如)中AddMinutes
获取附加信息来创建新方法。它还具有多种静态方法,用于从各种输入(例如)或一般操作值(例如)创建新实例DateTime
IsDaylightSavingsTime
FromBinary
DateTime
Compare
没有方法可以实际修改当前实例。