CA2104: No declarar tipos de referencias mutables de solo lectura
Elemento | Valor |
---|---|
RuleId | CA2104 |
Category | Microsoft.Security |
Cambio importante | Poco problemático |
Nota
La regla CA2104 está obsoleta y se quitará en una versión futura de Visual Studio. No se implementará como analizador debido al análisis complicado necesario para determinar la inmutabilidad real de un tipo.
Causa
Un tipo visible externamente contiene un campo de sólo lectura visible externamente que es un tipo de referencia que se puede cambiar.
Nota
Esta regla está en desuso. Para más información, consulte Reglas en desuso.
Descripción de la regla
Un tipo que mutable es un tipo cuyos datos de instancia se pueden modificar. La clase System.Text.StringBuilder es un ejemplo de un tipo de referencia mutable. Contiene miembros que pueden cambiar el valor de una instancia de la clase. Un ejemplo de un tipo de referencia inmutable es la clase System.String. Una vez creada la instancia, su valor nunca puede cambiar.
El modificador de solo lectura (readonly en C#, ReadOnly en Visual Basic y const en C++) en un campo de tipo de referencia (o puntero en C++) impide que el campo se reemplace por una instancia diferente del tipo de referencia. Sin embargo, el modificador no impide que los datos de instancia del campo se modifiquen a través del tipo de referencia.
Esta regla puede mostrar accidentalmente una infracción de un tipo que, de hecho, es inmutable. En ese caso, es seguro suprimir la advertencia.
Los campos de matriz de solo lectura están exentos de esta regla, sino que provocan una infracción de CA2105: Los campos de matriz no deben ser de solo lectura.
Cómo corregir infracciones
Para corregir una infracción de esta regla, quite el modificador de solo lectura o, si un cambio importante es aceptable, reemplace el campo por un tipo inmutable.
Cuándo suprimir las advertencias
Es seguro suprimir una advertencia de esta regla si el tipo de campo es inmutable.
Ejemplo
En el ejemplo siguiente se muestra una declaración de campo que provoca una infracción de esta regla:
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de