代码之家  ›  专栏  ›  技术社区  ›  Sergio Tapia

为什么这个字段被声明为private并且也是readonly?

  •  25
  • Sergio Tapia  · 技术社区  · 15 年前

    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变量是只读的?

    3 回复  |  直到 8 年前
        1
  •  56
  •   silkfire thezar    9 年前

    如果是私人的 readonly 只读 修饰符确保字段只能在初始化期间或在其类构造函数中给定值。

    如果某些功能在初始化后不应该更改,那么使用可用的语言构造来强制执行它总是一种好的做法。

        2
  •  5
  •   M4N    15 年前

    这确保了 _downloader 在执行构造函数后不会更改。标记为的字段 readonly

        3
  •  1
  •   sree lakshmi kurra    7 年前

    只读字段对于在初始化后不应更改的数据建模非常有用。可以在声明只读字段或在构造函数中使用初始值设定项为其赋值,但此后不能对其进行更改。