在C#中,default
关键字可用于获取给定类型的默认值:
enum E1 { A,B,C,D }
enum E2 { A=1,B=2,C=3,D=4 }
int i = default(int); // i = 0
MyClass c = default(MyClass); // c = null
E1 e1 = default(E1); // e1 = A;
E2 e2 = default(E2); // e2 = 0;
但有时候,将null
作为类的默认值并不方便(而且有些编码人员认为返回null
不是最佳选择。)
假设我想作为表达式MyClass
的结果返回一个众所周知且受控制的default(MyClass)
实例,例如:
class MyClass
{
// Default value.
private static MyClass default_value = new MyClass();
// Default 'converter'.
public MyClass() { }
// Default 'converter'... I've tried: it doesn't work.
public MyClass default { return default_value; }
}
MyClass c = default(MyClass); // c = MyClass.default_value
虽然我无法自定义default
关键字实现我想要的行为的方式,但无论如何我不是C#专家所以问题是:
default
关键字行为?