我有一个类,我想在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类型。除string之外的引用类型的const字段只能用null初始化。
如果重要,我想像这样使用它:
void SomeFunction()
{
TrivialClass myTrivial = TrivialClass.Empty;
// Do stuff ...
}
答案 0 :(得分: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
。 Reference here
答案 1 :(得分:1)
快速拍摄,但我建议Point.Empty是静态成员,而不是常量:
public class TrivialClass
{
public static readonly TrivialClass Empty = new TrivialClass(0);
...
}