EffectiveC#8--确保0对于值类型数据是有效的(初始化问题)

1.决不要创建一个不包括0在内的枚举类型

2.举例如下:

public enum Planet {  Mercury = 1, Venus = 2, Earth = 3, Mars = 4, Jupiter = 5, Saturn = 6, Neptune = 7, Uranus = 8, Pluto = 9 }

  Planet sphere = new Planet();

     sphere此时的值就是0,而这并不是一个有效的值。这也会使得包含(Planet)这一类型的其它类型很难创建。

    假设某个结构体含有上述枚举类型的变量,创建这个实例的用户会创建一个不合法的Planet成员

建议做法:加入一个0值

public enum Planet { None = 0, Mercury = 1, Venus = 2, Earth = 3, Mars = 4, Jupiter = 5, Saturn = 6, Neptune = 7, Uranus = 8, Pluto = 9 }

3.值类型中包含了引用类型,字符串是一个常见的例子

public struct LogMessage { private int _ErrLevel; private string _msg; }

  LogMessage MyMessage = new LogMessage( );   _msg被初始为null。

原文地址:https://www.cnblogs.com/tiantianle/p/4870240.html