Mat*_*att 23 c# resharper cil readonly
我正在使用ReSharper开发一个项目.有时它会提示我可以只读取一个字段.这有什么表现或其他好处吗?我认为它的好处是相当低级的,或者任何好处都是纯粹的语义?
谢谢
在下面的示例中,该字段最初只是私有,但resharper提示将其设置为只读.我理解为什么它可以设置为只读,即.它是在构造函数中设置而不是再次更改,但只是想知道这是否有任何好处......
public class MarketsController : Controller
{
private readonly IMarketsRepository marketsRepository;
public AnalysisController(IMarketsRepository marketsRepository)
{
this.marketsRepository = marketsRepository;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑 查看MSIL的最简单方法是什么?
And*_*rey 26
好处纯粹是语义上的.它将帮助您的代码用户明确地了解在创建对象后无法更改此字段.编译器将阻止对此字段进行不必要的更改.我完全同意Python Zen的以下引用:
显式优于隐式.
一些细节:
正常字段和只读字段之间的唯一区别是initonlyIL中的标志.它没有优化(与常量一样),因为它实际上允许所有操作(获取和设置,但仅限于ctor).它只是提示编译器:不要让它在构造后改变.
.field public initonly int32 R
Run Code Online (Sandbox Code Playgroud)
它不是低级性能,而是更高级别的可维护性.只读内容是限制和控制某个值可以更改的位置数量的可能性之一.这反过来意味着你减少了类之间的相互依赖性(又名"松散耦合"); 结果是应用程序具有较少的内部依赖性,因此具有较低的复杂性.换句话说,只读字段和属性使您的应用程序更易于维护.
| 归档时间: |
|
| 查看次数: |
3127 次 |
| 最近记录: |