web-dev-qa-db-ja.com

C#の名前空間定数

クラス内だけでなく、名前空間全体に定数を定義する方法はありますか?例えば:

namespace MyNamespace
{    
    public const string MY_CONST = "Test";

    static class Program
    {
    }
}

次のようにコンパイルエラーが発生します。

予想されるクラス、デリゲート、列挙、インターフェイス、または構造体

50
Paul Michaels

それは不可能だと思います。ただし、定数のみでクラスを作成できます。

public static class GlobalVar
{
    public const string MY_CONST = "Test";
}

そして、それを次のように使用します

class Program
{
    static void Main()
    {
        Console.WriteLine(GlobalVar.MY_CONST);
    }
}
89
RvdK

これは不可能です

[〜#〜] msdn [〜#〜] から:

constキーワードは、フィールドまたはローカル変数の宣言を変更するために使用されます。

クラス内にはフィールドまたはローカル変数しか持てないため、これはグローバルconstを持つことができないことを意味します。 (つまり、名前空間const)

11
Oded

いいえ、ありません。静的クラスまたは列挙に入れます。

2
svinto

「静的を使用」も追加すると、他のクラスで定数を使用できます。

using static MyNameSpace.MyGlobals;

namespace MyNameSpace {
    public static class MyGlobals{
        public const bool SAVE_LOGSPACE = true;
        public static readonly DateTime BACKTEST_START_DATE = new DateTime(2019,03,01);
}
1
MrCalico