¿Hay alguna buena razón por la cual los cierres no sean inmutables en C #?

He estado yendo una y otra vez en mi cabeza, y parece que no puedo encontrar una buena razón por la cual los cierres de C # sean mutables. Simplemente parece una buena manera de obtener algunas consecuencias no deseadas si no eres consciente de lo que está sucediendo exactamente.

¿Quizás alguien que tenga un poco más de conocimiento pueda arrojar algo de luz sobre por qué los diseñadores de C # permitirían que el estado cambie en un cierre?

Ejemplo:

var foo = "hello";
Action bar = () => Console.WriteLine(foo);
bar();
foo = "goodbye";
bar();

Esto imprimirá "hola" para la primera llamada, pero el estado externo cambia para la segunda llamada, imprimiendo "adiós". El estado del cierre se actualizó para reflejar los cambios en la variable local.

Respuestas a la pregunta(6)

Su respuesta a la pregunta