제임스딘딘의
Tech & Life

개발자의 기록 노트/C#

[C#] 구조체

제임스-딘딘 2011. 7. 8. 12:22
구조체는 클래스와 동일한 구문으로 대부분 형식을 공유하지만 클래스보다 제한적이며 다음과 같은 특징을 갖는다.

▷ 구조체는 값 형식이고 클래스는 참조 형식이다.
▷ 클래스와 달리 구조체는 new 연산자를 사용하지 않고 인스턴스화 할 수 있다.
▷ 구조체는 생성자를 선언할 수 있으나 반드시 매개 변수를 사용해야 한다.
▷ 구조체는 다른 구조체 또는 클래스에서 상속될 수 없으며, 클래스의 기본 클래스가 될 수 없으며 모든 구조체는 System.Object 를 상속하는 System.ValueType에서 직접 상속한다. 
▷ 구조체는 인터페스이를 구현할 수 있다.
▷ 구조체를 nullable 형식으로 사용할 수 있고 여기에 null값을 할당할 수 있다.
▷ 구조체 선언 내에서 필드는 const 또는 static으로 선언한 경우에만 초기화 할 수 있다.
▷ 구조체에서는 매개변수가 없는 생성자인 기본 생성자나 소멸자를 선언할 수 없다. 

 
구조체는 다음과 같이 struct 키워드를 통해 정의한다.

public struct StructLogic
{

//필드, 속성, 메서드, 이벤트

 
구조체 블록 내부에 추가되는 필드, 속성, 메서드, 이벤트를 통칭하여 구조체 멤버라고 함.
클래스의 기능을 부분적으로 제한한 것이 구조체라 생각하면 이해가 쉬울 것.