Static readonly vs const in C#: Was ist der Unterschied und was wählt man?
Hallo zusammen! Ich bin ein C#-Anfänger und bin bei zwei ähnlichen Konzepten verwirrt: `static readonly` und `const`. Beide werden verwendet, um unveränderliche Werte zu deklarieren, aber ich verstehe nicht, wann man welches verwenden soll.
Zum Beispiel schreibe ich eine Klasse für mathematische Berechnungen:
```csharp
public class MathHelper
{
public const double Pi = 3.14159;
public static readonly double E = 2.71828;
}
```
Warum nicht beide als Konstanten deklarieren? Oder beide als `static readonly`? Was ist der grundlegende Unterschied?
Ich habe gelesen, dass `const` schneller ist, aber `static readonly` irgendwie mit dem Speicher zusammenhängt. Außerdem habe ich gehört, dass `const` nur für primitive Typen verwendet werden kann, während `static readonly` für alle Typen geeignet ist. Aber die praktischen Konsequenzen sind mir nicht ganz klar.
Könnt ihr mir anhand einfacher Beispiele erklären, wann ich welche Variante verwenden sollte? Besonders interessiert mich das Verhalten bei Code-Änderungen in Bibliotheken (DLL) – ich habe gehört, dass es hier Fallstricke gibt.
Vielen Dank im Voraus für eure Hilfe!