En .NET<5 y .NET Core 3.1 el siguiente código
var d = new Dictionary<string, int> { { "a", 0 }, { "b", 0 }, { "c", 0 } }; foreach (var k in d.Keys) { d[k]+=1; }lanza
System.InvalidOperationException: se modificó la colección; Es posible que la operación de enumeración no se ejecute.
Al apuntar a .NET 5, el fragmento ya no arroja.
¿Que ha cambiado?
No pude encontrar la respuesta en Cambios importantes en .NET 5 yMejoras de rendimiento en .NET 5 .
¿Tiene algo que ver con ref readonly T ?