BCL 컬렉션이 클래스가 아닌 구조체 열거자를 사용하는 이유는 무엇입니까? 우리 모두는 가변 구조체가 일반적으로 악하다 는 것을 알고 있습니다. 나는 또한 IEnumerable.GetEnumerator()type 을 반환 하기 때문에 IEnumerator구조체가 참조 유형으로 즉시 boxing되어 시작하기 위해 단순히 참조 유형인 경우보다 더 많은 비용이 든다는 것을 확신합니다 . 그렇다면 BCL 제네릭 컬렉션에서 모든 열거자가 변경 가능한 구조체인 이유는 무엇입니까? 분명 그럴만한 이유가 있었을 것이다. 나에게 발생하는 유일한 것은 구조체를 쉽게 복사할 수 있으므로 임의의 지점에서 열거자 상태를 보존할 수 있다는 것입니다. 그러나 인터페이스에 Copy()메소드를 추가하는 IEnumerator것이 덜 번..