Reputation: 16695
Is there any way to define a constant for an entire namespace, rather than just within a class? For example:
namespace MyNamespace
{
public const string MY_CONST = "Test";
static class Program
{
}
}
Gives a compile error as follows:
Expected class, delegate, enum, interface, or struct
Upvotes: 75
Views: 72173
Reputation: 141
I would define a public static class with constants:
namespace Constants
{
public static class Const
{
public const int ConstInt = 420;
}
}
Inside my Program.cs, i would add the following using:
using static Constants.Const;
using static System.Console;
Now you can freely use the defined constants (which are static by default) and static Console-Methods, e. g.
class Program
{
static void Main(string[] args)
{
WriteLine(ConstInt);
}
}
Upvotes: 2
Reputation: 371
You can use the constants in your other classes if you add the "Using Static" too:
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);
}
}
Upvotes: 8
Reputation: 19790
I believe it's not possible. But you can create a Class with only constants.
public static class GlobalVar
{
public const string MY_CONST = "Test";
}
and then use it like
class Program
{
static void Main()
{
Console.WriteLine(GlobalVar.MY_CONST);
}
}
Upvotes: 118