代码改变世界

Effective C# 学习笔记(十九)确保0(null)对于值(引用)类型是一个合法(理)的默认值

2011-07-09 23:23  小郝(Kaibo Hao)  阅读(283)  评论(0编辑  收藏  举报

默认情况下,.net系统会把所有对象的默认值设置为0。一般情况下,你也没有什么方法可以将默认值设置为非0。但有一种情况例外,就是Enum类型,其可指定其默认值范围。代码如下:

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

// First edition included Pluto.

}

//这里的sphere就会为0,但他不是个合法的Planet

Planet sphere = new Planet();

 

//合适的做法为将0作为None,即不是所有的枚举值中的一个值来定义。

[Flags]

public enum Styles

{

None = 0,

Flat = 1,

Sunken = 2,

Raised = 4

}

 

对于引用类型的对象来说,一般都会默认初始化为null,但有些情况下需要特殊处理以保证其符合实际中的应用,如对于string类型的对象,一般会返回string.Empty,这比返回null在大多数情况下好的多。

 

public struct LogMessage2

{

private int ErrLevel;

private string msg;

public string Message

{

get

{

return (msg != null) ?msg : string.Empty;

}

set

{

msg = value;

}

}

}