我有一个类,我想在System.Drawing中包含一个类似于Point.Empty的“ Empty”常量成员。那可能吗?

这是产生错误的简化版本:

public class TrivialClass
{
    public const TrivialClass Empty = new TrivialClass(0);
    public int MyValue;
    public TrivialClass(int InitialValue)
    {
        MyValue = InitialValue;
    }
}


给出的错误是:TrivialClass.Empty是TrivialClass类型。除字符串以外的引用类型的const字段只能用null初始化。

如果很重要,我想这样使用它:

void SomeFunction()
{
    TrivialClass myTrivial = TrivialClass.Empty;
    // Do stuff ...
}

最佳答案

您可以对这些类型使用static readonly。常量只能用文字值(例如数字,字符串)初始化。

public class TrivialClass
{
    public static readonly TrivialClass Empty = new TrivialClass(0);
    public int MyValue;
    public TrivialClass(int InitialValue)
    {
        MyValue = InitialValue;
    }
}


查找定义后。 Point.Empty也是static readonlyReference here

09-25 21:10