3

我有一个类,我想在 System.Drawing 中包含一个类似于 Point.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 ...
}
4

2 回答 2

11

您可以使用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 readonly参考这里

于 2013-01-22T21:52:23.473 回答
1

只是快速拍摄,但我建议 Point.Empty 是静态成员,而不是常量:

public class TrivialClass
{
    public static readonly TrivialClass Empty = new TrivialClass(0);
    ...
}
于 2013-01-22T21:53:38.287 回答