Avatar ·

¿Cuál es la diferencia entre const y readonly en C#? ¿Cuándo usar cada uno?

¡Hola a todos! Empecé a estudiar C# y me topé con dos modificadores que me parecen muy similares: `const` y `readonly`. Entiendo que ambos hacen que una variable sea inmutable, pero siento que debe haber alguna diferencia fundamental entre ellos que se me escapa. Aquí hay un ejemplo simple que escribí: ```csharp public class MyClass { public const int MyConst = 10; public readonly int MyReadonly = 20; public MyClass() { MyReadonly = 30; // Esto funciona // MyConst = 40; // Error: la constante no puede ser modificada } public void SomeMethod() { // MyReadonly = 50; // Error: el campo readonly solo se puede modificar en el constructor } } ``` Veo que el campo `readonly` se puede modificar en el constructor, pero `const` no. ¿Pero hay otras diferencias? Por ejemplo, he oído que `const` es un valor estático por naturaleza, mientras que `readonly` puede ser diferente para distintas instancias. ¿Cómo funciona esto a nivel de compilación?