Quelle est la différence entre const et readonly en C# ? Quand utiliser quoi ?
Bonjour à tous ! J'ai commencé à apprendre C# et je suis tombé sur deux modificateurs qui me semblent très similaires : `const` et `readonly`. Je comprends que tous deux rendent une variable immuable, mais je sens qu'il doit y avoir une différence fondamentale entre eux que je manque.
Voici un exemple simple que j'ai écrit :
```csharp
public class MyClass
{
public const int MyConst = 10;
public readonly int MyReadonly = 20;
public MyClass()
{
MyReadonly = 30; // Cela fonctionne
// MyConst = 40; // Erreur : une constante ne peut pas être modifiée
}
public void SomeMethod()
{
// MyReadonly = 50; // Erreur : un champ readonly ne peut être modifié que dans le constructeur
}
}
```
Je vois qu'un champ `readonly` peut être modifié dans le constructeur, contrairement à `const`. Mais y a-t-il d'autres différences ? Par exemple, j'ai entendu dire que `const` est une valeur statique par nature, tandis que `readonly` peut être différent pour différentes instances. Comment cela fonctionne-t-il au niveau du compilateur ?