사용자 정의 타입
C#에 기본 탑재된 16가지 미리 정의된 타입 외에도 개발자가 직접 생성할 수 있는 사용자 정의 타입이 있으며 총 6가지 분류로 나뉩니다.
- 클래스(class) 타입
- 구조체(struct) 타입
- 배열(array) 타입
- 열거형(enum) 타입
- 델리게이트(delegate) 타입
- 인터페이스(interface) 타입
사용자 정의 타입은 타입 선언을 통해 생성합니다
- 생성할 타입의 종류
- 새 타입의 이름
- 해당 타입의 모든 멤버 선언(이름 및 정의). 단 배열과 델리게이트에는 이름이 지정된 멤버가 없으므로 예외입니다
선언을 마치면 미리 정의된 타입처럼 해당 타입의 객체를 생성하고 사용할 수 있습니다.
미리 정의된 타입(내장 타입)은 별도 선언 없이 바로 사용하고 객체를 인스턴스화할 수 있습니다. 반면 사용자 정의 타입은 이름 그대로 타입 설계도를 먼저 직접 선언한 뒤 객체를 만들어야 합니다.
예시: int, float 같은 내장 기본 타입은 별도 정의 없이 즉시 사용 가능하며 int age; float price; 형태로 작성하면 됩니다.
앞서 언급한 Person 사용자 정의 타입은 두 단계 과정이 필요합니다.
1단계: 선언(class Person {}로 타입 템플릿 정의)
2단계: 인스턴스화(Person lucas = new Person();로 객체 생성)
// 자동차 클래스
public class Car
{
// 1. 비공개 필드(하위 데이터 저장 공간)
private string _brand; // 차 브랜드
private string _color; // 차 색상
// 2. 공개 속성(외부 접근 창구, 유효성 검사 로직 추가 가능)
public string Brand
{
get { return _brand; }
set
{
// 간단 유효성 검사: 브랜드명은 빈 값 불가
if (!string.IsNullOrEmpty(value))
_brand = value;
else
Console.WriteLine("브랜드 이름은 비워둘 수 없습니다!");
}
}
public string Color
{
get { return _color; }
set { _color = value; }
}
// 3. 주행 동작 메서드
public void Drive()
{
Console.WriteLine($"【{Color}】색상의【{Brand}】차가 주행 중입니다!");
}
}Code language: JavaScript (javascript)
위 예시는 자동차 클래스로 두 개의 필드를 포함합니다. 필드는 변수로 내장 타입을 활용해 실제 데이터를 저장하는 곳입니다. 그 외 public string Brand{} 와 public string Color{} 두 공개 속성이 있는데 본질적으로 함수이며 이후 내용에서 다룹니다. 마지막으로 함수 멤버인 public void Drive(){} 도 정의되어 있습니다.
이 여러 사용자 정의 타입들은 이후 장에서 핵심적으로 설명하겠습니다.

사용자 정의 타입