C#中类、结构、枚举在何种情况下使用它
1个回答
展开全部
需要的地方就会用到...
枚举提供成组的常数值,它们有助于使成员成为强类型以及提高代码的可读性。
当你需要一组常量又不想让团队成员或自己过段时间难以理解时,枚举就非常有用...如果需要按位比较的标志则枚举更加有用...
以下是MDSN建议的设计准则:
引用 MSDN:
一定要优选使用枚举而不是静态常量。
不要对开放集(如操作系统版本)使用枚举。
不要定义供将来使用的保留枚举值。
一定不要将 sentinel 值包括在枚举中。
一定要在简单枚举中提供一个零值。
考虑将 System.Int32(大多数编程语言的默认数据类型)用作枚举的基础数据类型,除非出现以下任何一种情况:
.枚举是标志枚举,且您有 32 个以上的标志或者期望在将来有更多的标志。
.基础类型需要与 Int32 不同,以便易于与期望不同大小的枚举的非托管代码进行互操作。
.较小的基础类型可以节省大量空间。如果期望枚举主要用作控制流的参数,其大小就不太重要。如果出现下面的情况,大小节省可能会很重要:
..期望枚举被用作非常频繁地实例化的结构或类中的字段。
..期望用户创建枚举实例的大型数组或集合。
..预计要序列化大量枚举实例。
至于结构,因为它是值类型,在堆栈上或以内联方式分配,且在超出范围时释放...所以一般情况下其分配和释放的开销更小...但是如果在要求大量的装箱和取消装箱操作的情况下使用,则值类型的表现就不如引用类型...
以下是MDSN建议的设计准则:
引用 MSDN:
不要定义结构,除非该类型具备以下所有特征:
.它在逻辑上表示单个值,与基元类型(整型、双精度型等)类似。
.它的实例大小小于 16 字节。
.它是不可变的。
.它将不必频繁被装箱。
如果这些条件中的一个或多个没有满足,则创建引用类型而不是结构。不遵守此准则会对性能产生负面影响。
4楼提到的情况就是属于不遵守此准则的例子,当“你定义了非常多的属性的时候”就不应该选择结构而应该是类...数据类型的选择是要根据实际需求而定的...
枚举提供成组的常数值,它们有助于使成员成为强类型以及提高代码的可读性。
当你需要一组常量又不想让团队成员或自己过段时间难以理解时,枚举就非常有用...如果需要按位比较的标志则枚举更加有用...
以下是MDSN建议的设计准则:
引用 MSDN:
一定要优选使用枚举而不是静态常量。
不要对开放集(如操作系统版本)使用枚举。
不要定义供将来使用的保留枚举值。
一定不要将 sentinel 值包括在枚举中。
一定要在简单枚举中提供一个零值。
考虑将 System.Int32(大多数编程语言的默认数据类型)用作枚举的基础数据类型,除非出现以下任何一种情况:
.枚举是标志枚举,且您有 32 个以上的标志或者期望在将来有更多的标志。
.基础类型需要与 Int32 不同,以便易于与期望不同大小的枚举的非托管代码进行互操作。
.较小的基础类型可以节省大量空间。如果期望枚举主要用作控制流的参数,其大小就不太重要。如果出现下面的情况,大小节省可能会很重要:
..期望枚举被用作非常频繁地实例化的结构或类中的字段。
..期望用户创建枚举实例的大型数组或集合。
..预计要序列化大量枚举实例。
至于结构,因为它是值类型,在堆栈上或以内联方式分配,且在超出范围时释放...所以一般情况下其分配和释放的开销更小...但是如果在要求大量的装箱和取消装箱操作的情况下使用,则值类型的表现就不如引用类型...
以下是MDSN建议的设计准则:
引用 MSDN:
不要定义结构,除非该类型具备以下所有特征:
.它在逻辑上表示单个值,与基元类型(整型、双精度型等)类似。
.它的实例大小小于 16 字节。
.它是不可变的。
.它将不必频繁被装箱。
如果这些条件中的一个或多个没有满足,则创建引用类型而不是结构。不遵守此准则会对性能产生负面影响。
4楼提到的情况就是属于不遵守此准则的例子,当“你定义了非常多的属性的时候”就不应该选择结构而应该是类...数据类型的选择是要根据实际需求而定的...
追问
可能可以说得简单一点???谢谢啦!!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询