¿Cuál es la diferencia entre value types y reference types en C#?
Un value type (struct, int, bool, enum) guarda sus datos directamente y se copia al asignarlo; un reference type (class, string, arrays) guarda un puntero al heap, y al asignarlo se copia el puntero, no los datos. Pasar una struct a un método y modificarla dentro solo cambia la copia, a menos que la pases por ref.