Avatar ·

Qual é a diferença entre const e readonly em C#? Quando usar cada um?

Olá a todos! Comecei a estudar C# e me deparei com dois modificadores que me parecem muito semelhantes: `const` e `readonly`. Eu entendo que ambos tornam uma variável imutável, mas sinto que deve haver alguma diferença fundamental entre eles que estou perdendo. Aqui está um exemplo simples que escrevi: ```csharp public class MyClass { public const int MyConst = 10; public readonly int MyReadonly = 20; public MyClass() { MyReadonly = 30; // Isso funciona // MyConst = 40; // Erro: constante não pode ser alterada } public void SomeMethod() { // MyReadonly = 50; // Erro: campo readonly só pode ser alterado no construtor } } ``` Eu vejo que o campo `readonly` pode ser alterado no construtor, mas `const` não. Mas existem outras diferenças? Por exemplo, ouvi dizer que `const` é um valor estático por natureza, enquanto `readonly` pode ser diferente para diferentes instâncias. Como isso funciona no nível do compilador?