在为字段分配默认默认值时(此处为bool的false),FxCop说:
Resolution : "'Bar.Bar()' initializes field 'Bar.foo'
of type 'bool' to false. Remove this initialization
because it will be done automatically by the runtime."
Run Code Online (Sandbox Code Playgroud)
现在,我知道代码是int a = 0或bool ok = false正在引入一些冗余,但对我而言,它似乎是一个非常非常好的代码实践,我的老师在我看来坚持正确的代码实践.
不仅性能损失很小,更重要的是:依赖于默认值依赖于每个程序员的知识,使用一段代码,在默认的每种数据类型上.(约会时间?)
说真的,我觉得这很奇怪:应该保护你不要犯下太明显错误的程序,建议在这里制作一个,只是为了提高性能?(我们在这里讨论初始化代码,只执行一次!那些关心那么多的程序员当然可以省略初始化(并且应该使用C或汇编程序:-)).
FxCop在这里犯了一个明显的错误,还是有更多呢?
两个更新:
这不仅仅是我的观点,而是我在大学(比利时)教过的.并不是说我喜欢使用一个 论证广告verecundiam,而只是为了表明这不仅仅是我的观点.关于那个:
道歉,我刚刚发现了这个:
重复问题:
环境:Visual Studio 2008 w/Resharper 4.1 w/32bit .NET Framework 3.5
Resharper报告说
默认值初始化字段是多余的

明确声明默认字段值是不好的做法吗?
我发现明确声明默认值更具可读性.
顺便说一下,这不是这个问题的重复 是默认参数在OOP中的不良做法吗?
[更新]对于那些想知道在哪里更改Resharper 4.1设置以将警告更改为提示/建议的人; 更改以下设置

将改变Visual Studio 2008

依赖隐式默认值是不好的做法,例如:
class Node
{
int red;
int green;
int blue;
bool grayscale;
Node next;
}
Run Code Online (Sandbox Code Playgroud)
而不是明确地设置它们:
class Node
{
int red = 0;
int green = 0;
int blue = 0;
bool grayscale = false;
Node next = null;
}
Run Code Online (Sandbox Code Playgroud)