gpt4 book ai didi

c# - 为什么这个字段被声明为私有(private)的并且也是只读的?

转载 作者:IT王子 更新时间:2023-10-29 04:16:16 25 4
gpt4 key购买 nike

在下面的代码中:

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

最佳答案

如果它是私有(private)的并且是readonly,好处是您不能在初始化后从该类的另一部分无意中更改它。 readonly 修饰符确保该字段只能在其初始化期间或在其类构造函数中被赋予一个值。

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

在相关说明中,C# 9 引入了 init accessor method对于属性,表示属性值只能在对象构造时设置,例如:

class InitExample
{
private double _seconds;

public double Seconds
{
get { return _seconds; }
init { _seconds = value; }
}
}

关于c# - 为什么这个字段被声明为私有(private)的并且也是只读的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3033554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com