我正在审查一些log4net的代码,然后看到了这段。
private static readonly ILog logger = LogManager.GetLogger(typeof(AdminClient));
我想知道为什么需要使用private static readonly。
据我的理解,private意味着变量在类之外不能使用,除非有访问器方法或获取属性。
static意味着变量的作用域仅限于此文件。
readonly意味着只能读取值,不能赋值。
因此,我认为编写此代码的人将其声明为private,因为他们不希望它在类之外使用,并且将其设置为static,以便不希望它在文件之外使用。但是,如果有一个获取属性,static会防止这种情况发生吗?
我认为我可以理解readonly,并且只能从中读取值而不能设置。
非常感谢任何建议,
protected static readonly
,这让我从 VS Code Analysis 得到了一个 "CA2104: Do not declare read only mutable reference types" 的警告。如此处所提到的,“protected readonly
字段并不是那么清晰。由于protected
,您可能希望派生类可以初始化该字段。”将声明更改为private static readonly
即可解决此问题。 - CrazyPyro