Estaba revisando un código para log4net y me encontré con esto.C# privado, estático y de solo lectura
private static readonly ILog logger = LogManager.GetLogger(typeof(AdminClient));
Me pregunto por qué necesitarías tener un estático privado de solo lectura.
Según mi entender, privado significaría que la variable no se puede usar fuera de la clase a menos que haya un método de acceso o una propiedad get.
estático significa que la variable tiene un alcance solo en este archivo.
readonly significa que solo puede leer el valor y no puede asignarlo.
Entonces, estoy pensando que la persona que escribió este código. lo declararon privado ya que no lo quieren usado fuera de la clase y estático por lo que no quieren que se use fuera del archivo. Sin embargo, si hay una propiedad get, esto evitaría que esto ocurra.
Creo que puedo entenderlo solo y que el valor solo debe leerse y no establecerse.
Muchas gracias por cualquier consejo,
Un dato interesante sobre este patrón específico: Una vez declarado esto como 'protegida static readonly' y eso me valió un "[CA2104] (https://msdn.microsoft.com/en-us/library/ms182302.aspx): No declare los tipos de referencia de solo lectura mutable" advertencia de VS Code Analysis. Como se mencionó [aquí] (http://stackoverflow.com/a/15745885/268066), "Un campo' protected readonly' no es tan claro. Como 'protected', se puede esperar que una clase derivada pueda inicializar el campo" Cambiando la declaración a' private static readonly' solucionado esto – CrazyPyro