sve*_*vit 12 c# resharper readonly
为什么ReSharper在下面的示例中建议"设置"的只读字段?
如果我理解正确,readonly如果仅在构造函数中更改此字段,则应使用修饰符,但在我的示例中,我还在同一个类中的另一个方法中更改它.
我错过了什么?
public partial class OptionsForm : Form
{
private Settings settings;
public OptionsForm(Settings s)
{
settings = s;
}
private void SaveData()
{
settings.ProjectName = TextBoxProject.Text;
}
}
Run Code Online (Sandbox Code Playgroud)
rah*_*hul 26
当引用类型声明为readonly时,指针是不可变的,但不是它指向的对象.这意味着:
- 可以初始化引用类型数据成员以指向类的实例,但是一旦完成,就不可能使它指向构造函数之外的类的另一个实例
- readonly修饰符对readonly数据成员指向的对象没有影响.
阅读详细的文章
请记住,编码标准和设计模式的主要原因是使人们更容易理解您的代码。
通过将字段标记为“只读”,您可以告诉类的读者,他们无需考虑字段值的更改方式。
但是,作为只读字段指向的对象可以更改其状态,将字段标记为只读有时可能会引起误解。因此,考虑一下天气,它可以帮助您的代码读者(例如一个人)了解您的设计。
如果该字段指向的对象中的值在对象生存期内更改,那么我认为不应将字段标记为只读。(例如,所指向的对象应该表现得好像在调用类的承包商时是不可变的)
(但是,有一些例外,例如,即使认为记录器确实更改了日志文件的状态,也可以使用只读字段指向记录器。)
| 归档时间: |
|
| 查看次数: |
4051 次 |
| 最近记录: |