【more effective C#】改善 C# 代码的 50 个有效方法 - 注意值类型与引用类型之间的区别
-
对于 C# 来说, 必须在创建的时候决定该类型的所有实例应该表现出什么样的行为。
-
对于具体应为什么类型, 没有具体的答案, 而是需要根据该类型的用法来判断。
-
值类型不是多态的,因此更适合存放应用程序的数据。
-
而引用类型可以多态, 因此应该用来定义应用程序的行为。
-
创建新类型的时候, 首先要考虑该类型的职责, 根据职责来决定它是值类型还是引用类型。
-
通过公用方法导出的数据,以及充当属性的数据都应该被设计成值类型
-
6 条帮助你决定新类型应设计为值类型的 tips:
- 这个类型是否主要用于存放数据?
- 这个类型能否做成不可变的类型?
- 这个类型是否比较小?
- 能否完全通过访问其数据成员的属性把这个类型的共有接口定义出来?
- 能否确定该类型将来不会有子类?
- 能否确定该类型将来不需要多态?
-
底层的数据对象最好是用值类型来表示。 而应用程序的行为则适合放在引用类型中。 在适当的地方使用值类型, 可以让你从类对象中安全地导出数据副本。 此外, 还可以提高内存的使用效率, 因为这些类型的值是基于栈来存放的, 而且可以内联到其他的值类型中。 在适合的地方使用引用类型, 可以让你利用标准的面向对象技术来编写应用程序的逻辑代码。如果你还不确定某个类型将来会怎么用,
那么就优先考虑将其设计为引用类型。