다음을 통해 공유


클래스와 구조체 간의 선택

클래스는 참조 형식이고 구조체는 값 형식입니다. 참조 형식은 힙에 할당되므로 메모리 관리는 가비지 수집기에서 처리합니다. 값 형식은 스택에 할당되거나 인라인으로 할당되고 범위를 벗어나면 할당이 취소됩니다. 일반적으로 값 형식은 할당 및 할당 취소하기 쉽지만, 많은 양의 boxing과 unboxing이 필요한 시나리오에서 사용하는 경우 참조 형식과 비교해 볼 때 성능이 떨어집니다. 자세한 내용은 Boxing 및 Unboxing(C# 프로그래밍 가이드)을 참조하십시오.

값 형식 및 참조 형식에 대한 자세한 내용은 공용 형식 시스템을 참조하십시오.

형식의 인스턴스가 작고 일반적으로 수명이 짧거나 일반적으로 다른 개체에 포함되는 경우 클래스 대신 구조체를 정의할 수 있습니다.

형식이 다음 특징을 모두 갖고 있는 경우에만 구조체를 정의합니다.

  • 기본 형식(integer, double, 등)과 유사한 단일 값을 논리적으로 나타냅니다.

  • 인스턴스 크기가 16바이트보다 작습니다.

  • 변경할 수 없습니다.

  • 자주 boxed하지 않아도 됩니다.

이러한 조건 중 하나 이상이 충족되지 않는 경우 구조체 대신 참조 형식을 만듭니다. 이 지침을 준수하지 않으면 성능에 부정적인 영향을 줄 수 있습니다.

Portions Copyright 2005 Microsoft Corporation. 모든 권리 보유.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

디자인 지침에 자세한 내용은 참조를 "Framework 디자인 지침: 규칙, 숙어, 및 재사용에 대 한 패턴입니다.NET 라이브러리"도 서 Krzysztof Cwalina와 Brad Abrams, 게시 Addison-wesley, 2005.

참고 항목

기타 리소스

형식 디자인 지침

클래스 라이브러리 개발을 위한 디자인 지침