Static readonly vs const en C#: ¿cuándo usar qué?
¡Hola a todos! Soy un desarrollador C# principiante y me atormenta una pregunta: ¿cuál es la diferencia entre `static readonly` y `const`? Entiendo que ambos se usan para declarar valores inmutables, pero no tengo idea de cuándo aplicar cada uno.
Aquí hay un ejemplo: estoy escribiendo una clase para trabajar con fórmulas matemáticas. Necesito declarar el número Pi y la cantidad de decimales para mostrar los resultados. Lo hice así:
```csharp
public class MathHelper
{
public const double Pi = 3.14159;
public static readonly int Precision = 3;
}
```
Pero luego otro desarrollador dijo que `const` para `Pi` está bien, pero `static readonly` para `Precision` es extraño. ¿Por qué? Ambos valores no cambian. Y también noté que si uso `const` en otro proyecto, después de cambiar el valor en este ensamblado, el otro no ve la actualización hasta que se recompile. Con `static readonly` eso no pasa.
Por favor, explíquenme cuál es la diferencia fundamental. ¿Cuándo se debe usar `const` y cuándo `static readonly`?