Avatar ·

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 ?