如果您只将值设置为默认值,是否始终可以不显式初始化值?

Sea*_*son 11 c#

Resharper刚刚提示我这行代码:

private static bool shouldWriteToDatabase = false;
Run Code Online (Sandbox Code Playgroud)

表示我不应该说"= false",因为bools显然在C#中默认为false.我用C#编程超过一年半,从来不知道.我想它只是在裂缝中滑落,但这让我想知道什么是好的做法.

我是否假设所有人都能理解默认值?这将导致更清晰的代码,但如果另一个程序员不知道默认值,则会引起歧义.

Mar*_*ers 11

我个人认为:

  • 如果您的代码依赖于初始值,那么明确是很好的.
  • 如果你的代码不依赖于初始值,那么省略它会使代码更有意义并且使代码更加混乱.

但是我不认为Resharper可以很容易地发现这两种情况之间的区别.

  • @Kirk Woll:`bool x = false;`表示"我希望这个成员最初是假的." 这与`bool x;`非常不同,后者说"也许我希望这个成员最初是假的,或者我可能不会使用初始值,或者我可能只是忘记初始化它.我会留给你猜猜哪个." (6认同)
  • *为什么*明确是好的?对我而言似乎分散了注意力.我的意思是,如果你不知道,'bool`默认为false,那么你还有其他问题...似乎类似于说'如果(二==真)...`.再次,分散注意力,因为它是多余的. (3认同)
  • @Mark,`bool x;`作为*field*声明*总是*表示(对我而言)我的意思是它是假的. (2认同)
  • 我喜欢明确,特别是对于可空类型`bool?x` ;,默认是什么?:)帮助其他程序员,特别是当他们可能在定义中查找初始值时,在所有构造函数,工厂方法或奇怪的初始化方法中. (2认同)