在自定义类型上使用时自定义默认关键字行为?

时间:2015-10-22 09:37:54

标签: c# default

在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#专家所以问题是:

  • 在自定义类型上使用时,是否有任何C#构造或workarround来自定义default关键字行为?

0 个答案:

没有答案
相关问题