为什么resharper建议在未更改的字段中使用readonly?

gab*_*oer 22 c# resharper

为了澄清这个问题,我想补充一点,我不是在问为什么我应该选择readonly over const或者readonly比const更有什么好处.

我问为什么只是因为它没有改变(目前)而只读一个字段.

例如:如果我写下面的类:

public class MyClass
{
      public int _i = 5;

      // Code that doesn't change the value of i:
      ...
}
Run Code Online (Sandbox Code Playgroud)

Resharper将表明它可以只读.

谢谢

tva*_*son 29

当它检测到您没有在启动时分配给变量时,它假定您不希望变量发生变化.使变量readonly(或const)将阻止您将来分配给变量.由于这似乎(通过使用)是您想要的行为,因此它建议您将其正式化并获得保护的好处.


P D*_*ddy 5

我经常试着记住1做Resharper试图提醒你做的事情.如果我有任何不可变的字段,我喜欢标记它们readonly以形式化.在许多类型上,我会做所有的领域.有永恒的利益([2] [3] ),以及ReSharper的是想帮你把他们的优势.

1我个人不使用Resharper.我有我的理由.

  • 我读到他的陈述是"我同意R#给你的那些规则,并试着自己跟踪它们,尽管我不再使用R#我自己了". (3认同)
  • @John Saunders:我的陈述中的"你"是字面的,指的是OP,而不是代词"one"的替代品.如果Resharper提醒我**某事,那么我自己也不必尝试记住它. (2认同)