클래스와 구조체 간의 선택
업데이트: 2007년 11월
클래스는 참조 형식이고 구조체는 값 형식입니다. 참조 형식은 힙에 할당되므로 메모리 관리는 가비지 수집기에서 처리합니다. 값 형식은 스택에 할당되거나 인라인으로 할당되고 범위를 벗어나면 할당이 취소됩니다. 일반적으로 값 형식은 할당 및 할당 취소하기 쉽지만, 많은 양의 boxing과 unboxing이 필요한 시나리오에서 사용하는 경우 참조 형식과 비교해 볼 때 성능이 떨어집니다. 자세한 내용은 Boxing 및 Unboxing(C# 프로그래밍 가이드)을 참조하십시오.
값 형식 및 참조 형식에 대한 자세한 내용은 공용 형식 시스템 개요를 참조하십시오.
형식이 다음 특징을 모두 갖고 있는 경우에만 구조체를 정의합니다.
기본 형식(integer, double, 등)과 유사한 단일 값을 논리적으로 나타냅니다.
인스턴스 크기가 16바이트보다 작습니다.
변경할 수 없습니다.
자주 boxed하지 않아도 됩니다.
이러한 조건 중 하나 이상이 충족되지 않는 경우 구조체 대신 참조 형식을 만듭니다. 이 지침을 준수하지 않으면 성능에 부정적인 영향을 줄 수 있습니다.
Portions Copyright 2005 Microsoft Corporation. All rights reserved.
Portions Copyright Addison-Wesley Corporation. All rights reserved.
디자인 지침에 대한 자세한 내용은 2005년에 Addison-Wesley에서 책으로 출간한 Krzysztof Cwalina와 Brad Abrams의 "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries"를 참조하십시오.