I like c#, but why can I do :
public static bool Initialized { private set; get; }
or this :
public static bool Initialized = false;
but not a mix of both in one line ?
I just need to set access level to my variable (private set), and I need it set at false on startup. I wouldn't like to make that boring private _Initialized variable, which would be returned by the getter of the public Initialized var. I like my code to be beautiful. (NB: my variable is static, it can't be initialized in the constructor).
Thanks
Since C# 6:
You can just do:
Since
bool
values are always false by default, there's no need to initialize it.If you need this to be true by default, or to have more complex logic, you need to do this in a static constructor or use a backing field.
As for "I like my code to be beautiful" - personally, for non-default initialization, I think this is just as "beautiful":
This makes the initialization to a non default very visible, which is not a bad thing.
The two blocks of code you have mentioned are two different things.
The first block is an auto implemented property defination. This is syntactic sugar for a full property defination which looks like this:
Your second block of code is a static member definition. If you look at the expansion I have given above, you'll notice that it includes a private static member definition. If you want to provide an initial value you can do it here:
The inline property definition you are using was designed just to make code a bit shorter in the most common case. If you want to do anything else, you can use the full form of the property code.
Alternatively, you can go down a completely different route and use a static constructor. (See Corey's answer)
You could use a static constructor
However, as has been mentioned by others the default value of a bool will be false.