.Net系统默认所有的对象初始化时都为0。这并没有提供一个方法来预防其他 程序员创建的值类型数据的实例在初始化是都是0。请让你的数据类型默认值也 是0。
一个特殊情况是在枚举类型数据中。决不要创建一个不包括0在内 的枚举类型。所有的枚举类型都是从System.ValueType派生的。枚举类型的值是 从0开始的,但你可以改变这一行为:
public enum Planet
{
// Explicitly assign values.
// Default starts at 0 otherwise.
Mercury = 1,
Venus = 2,
Earth = 3,
Mars = 4,
Jupiter = 5,
Saturn = 6,
Neptune = 7,
Uranus = 8,
Pluto = 9
}
Planet sphere = new Planet();
sphere此时的值就是0,而这并不是一个有效的值。枚 举类型的取值限制在所有列举的值中,任何依懒这一(普通)事实的代码都将无法 工作。当你为你的枚举类型创建你自己的取值时,请确保0是当中的一个。如果 你的枚举类型采用的是以位(bit)模式,把0定义为其它属性不存在时的取值。
按照现在的情况,你迫使用户必须精确的初始化值:
Planet sphere = Planet.Mars;
这将使包含 (Planet)这一类型的其它类型很难创建:
public struct ObservationData
{
Planet _whichPlanet; //what am I looking at?
Double _magnitude; // perceived brightness.
}
创建一个新ObservationData实例的用户会创建一个不合法的 Planet成员:
ObservationData d = new ObservationData ();