在以下代码中:
public class MovieRepository : IMovieRepository
{
private readonly IHtmlDownloader _downloader;
public MovieRepository(IHtmlDownloader downloader)
{
_downloader = downloader;
}
public Movie FindMovieById(string id)
{
var idUri = ...build URI...;
var html = _downloader.DownloadHtml(idUri);
return ...parse ID HTML...;
}
public Movie FindMovieByTitle(string title)
{
var titleUri = ...build URI...;
var html = _downloader.DownloadHtml(titleUri);
return ...parse title HTML...;
}
}
I asked for something to review my code,有人提出了这种方法。我的问题是为什么IHtmlDownloader变量是只读的?
发布于 2010-06-14 03:21:13
如果它是私有的和readonly
的,好处是在它被初始化之后,你不能无意中从那个类的另一部分修改它。readonly
修饰符确保只能在字段初始化期间或在其类构造函数中为字段赋值。
如果某些功能在初始化后没有改变,使用可用的语言构造来强制执行总是一种好的做法。
发布于 2010-06-14 03:21:28
这可确保在执行构造函数后_downloader
的值不会更改。标记为readonly
的字段只能从类的构造函数中赋值。
发布于 2018-03-08 20:31:06
只读字段对于对初始化后不应更改的数据进行建模非常有用。可以在声明只读字段时或在构造函数中使用初始值设定项将值赋给该字段,但此后将无法更改该值。
https://stackoverflow.com/questions/3033554
复制相似问题