Namespace constant in C#
C#NamespacesConstantsC# Problem Overview
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
C# Solutions
Solution 1 - C#
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);
}
}
Solution 2 - C#
This is not possible
From MSDN:
> The const keyword is used to modify a declaration of a field or local variable.
Since you can only have a field or local variable within a class, this means you cannot have a global const
. (i.e namespace const)
Solution 3 - C#
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);
}
}
Solution 4 - C#
No, there is not. Put it in a static class or enum.
Solution 5 - C#
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);
}
}