¿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?