静态属性的默认值

Bli*_*tzz 46 c# static default properties

我喜欢c#,但为什么我可以这样做:

public static bool Initialized { private set; get; }
Run Code Online (Sandbox Code Playgroud)

或这个 :

public static bool Initialized = false;
Run Code Online (Sandbox Code Playgroud)

但不是两者兼而有之?

我只需要为我的变量(私有集)设置访问级别,我需要在启动时将其设置为false.我不想制作那个无聊的私有_Initialized变量,它将由公共Initialized var的getter返回.我喜欢我的代码很漂亮.(注意:我的变量是静态的,它不能在构造函数中初始化).

谢谢

Cor*_*old 53

您可以使用静态构造函数

static MyClass()
{
    Initialized = false;
}
Run Code Online (Sandbox Code Playgroud)

但是,正如其他人所提到的,bool的默认值将为false.

  • 静态构造者是党的生命. (11认同)

Meh*_*eza 19

从C#6开始:

public static bool Initialized { private set; get; } = false;
Run Code Online (Sandbox Code Playgroud)


Ree*_*sey 6

你可以这样做:

public static bool Initialized { private set; get; }
Run Code Online (Sandbox Code Playgroud)

由于bool默认情况下值始终为false,因此无需初始化它.

如果默认情况下需要这个,或者要有更复杂的逻辑,则需要在静态构造函数中执行此操作或使用支持字段.

至于"我喜欢我的代码是美丽的" - 就个人而言,对于非默认初始化,我认为这就像"美丽":

private static bool initialized = true;
public static bool Initialized { get { return initialized; } }
Run Code Online (Sandbox Code Playgroud)

这使得非默认的初始化非常明显,这不是一件坏事.