Search code examples
c#.netconstants

How to declare a class instance as a constant in C#?


I need to implement this:

static class MyStaticClass
{
    public const TimeSpan theTime = new TimeSpan(13, 0, 0);
    public static bool IsTooLate(DateTime dt)
    {
        return dt.TimeOfDay >= theTime;
    }
}

theTime is a constant (seriously :-), like π is, in my case it'd be pointless to read it from settings, for example. And I'd like it to be initialized once and never changed.

But C# doesn't seem to allow a constant to be initialized by a function (which a constructor is). How to overcome this?


Solution

  • Using readonly instead of const can be initialized and not modified after that. Is that what you're looking for?

    Code example:

    static class MyStaticClass
    {
        static readonly TimeSpan theTime;
    
        static MyStaticClass()
        {
            theTime = new TimeSpan(13, 0, 0);
        }
    }