Констант будет оптимизирован компилятором так, чтобы он был встроен в ваш код, а только для чтения не может быть встроен.Однако вы не можете создавать константы всех типов - поэтому здесь вы должны делать их только для чтения.
Так что, если вам нужно постоянное значение в вашем коде, вы должны сначала использовать const, если это возможно, если нет, то только для чтения, чтобы обеспечить безопасность, но не преимущества для производительности.
Как пример:
public class Example
{
private const int foo = 5;
private readonly Dictionary<int, string> bar = new Dictionary<int, string>();
//.... missing stuff where bar is populated
public void DoSomething()
{
Console.Writeline(bar[foo]);
// when compiled the above line is replaced with Console.Writeline(bar[5]);
// because at compile time the compiler can replace foo with 5
// but it can't do anything inline with bar itself, as it is readonly
// not a const, so cannot benefit from the optimization
}
}