3

クラスがあり、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 ...
}
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.Emptystatic 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 に答える