반응형

C# 구조체 3

구조체(Struct)와 클래스(Class)의 개념과 차이

1. 구조체 C#에서 구조체는 스택에 할당된 경량 데이터 구조를 나타내는 값 유형입니다. 구조체는 관련 데이터 필드의 작은 집합을 캡슐화하는 데 사용됩니다. 참조 유형인 클래스와 달리 구조체는 값 유형으로, 구조체 변수가 선언된 메모리 위치에 직접 데이터를 저장합니다. 구조체는 점, 색상 또는 크기와 같은 간단한 데이터 유형을 표현하는 데 자주 사용됩니다. 또한 사용자가 만든 사용자 지정 데이터 유형과 같이 더 복잡한 데이터 유형을 나타내는 데에도 사용할 수 있습니다. 2. 구조체의 특징 값 유형: 구조체는 값 유형이므로 선언된 메모리 위치에 직접 저장됩니다. 구조체 변수가 다른 구조체 변수에 할당되거나 메서드 인수로 전달되면 전체 구조체 데이터의 복사본이 만들어집니다. 메모리 할당: 구조체는 일반적으로..

공부/C# 2023.06.13

C#에서 클래스(Class)와 구조체(Struct)의 차이점

C#에서는 클래스(Class)와 구조체(Struct) 모두 사용자 지정 데이터 유형을 정의하는 데 사용됩니다. 그러나 둘 사이에는 몇 가지 주요 차이점이 있습니다: 상속: 클래스(Class)는 다른 클래스로부터 프로퍼티와 메서드를 상속할 수 있는 반면, 구조체(Struct)는 다른 구조체나 클래스로부터 상속할 수 없습니다. 즉, 클래스(Class)는 복잡한 상속 계층 구조와 다형성 동작을 구현하는 데 사용할 수 있는 반면 구조체(Struct)는 일반적으로 더 간단하고 가벼운 데이터 구조에 사용됩니다. 메모리 할당: 클래스(Class)의 인스턴스는 힙에 할당되는 반면 구조체(Struct)의 인스턴스는 스택에 할당됩니다. 즉, 클래스(Class)는 메모리 사용량과 가비지 컬렉션 측면에서 오버헤드가 더 높지만..

공부/C# 2023.04.07

C#의 구조체(struct)는 가비지 컬렉터의 대상인가요?

구조체가 어떠한 형태로 선언되었는지에 따라 달라집니다. C#에서는 구조체를 포함한 모든 객체가 선언 방식에 따라 힙 또는 스택에 할당됩니다. 구조체가 지역 변수나 메서드 매개변수로 선언되면 스택에 할당됩니다. 구조체가 클래스의 필드 또는 배열의 요소로 선언되면 힙에 할당됩니다. 구조체가 힙에 할당되면 다른 객체와 마찬가지로 가비지 컬렉션의 대상이 됩니다. 가비지 콜렉터는 객체가 더 이상 사용되지 않는다고 판단되면 힙에 할당된 구조체를 포함하여 해당 객체가 사용하던 메모리를 회수합니다. 그러나 구조체가 스택에 할당된 경우 가비지 컬렉션의 대상이 되지 않습니다. 구조체를 선언한 메서드가 종료되면 구조체가 사용한 메모리는 자동으로 할당 해제됩니다. 따라서 스택 할당 구조체는 힙 할당 구조체보다 효율적이지만, ..

공부/C# 2023.03.05
반응형