내장 타입

C#은 기본 내장 미리 정의 타입을 총 16가지 제공하며, 단순 타입 13가지비단순 타입 3가지로 나뉩니다. 모든 미리 정의 타입의 이름은 전부 소문자로 작성해야 합니다.

graph TD
    A[미리 정의 타입] --> B[단순 타입]
    A --> C[object]
    A --> D[string]
    A --> E[dynamic]

    B --> F[비수치 타입]
    B --> G[수치 타입]

    F --> H[bool]
    F --> I[char]

    G --> J[정수]
    G --> K[부동 소수점]

    J --> L[8비트]
    J --> M[16비트]
    J --> N[32비트]
    J --> O[64비트]

    L --> P[sbyte]
    L --> Q[byte]

    M --> R[short]
    M --> S[ushort]

    N --> T[int]
    N --> U[uint]

    O --> V[long]
    O --> W[ulong]

    K --> X[decimal]
    K --> Y[float]
    K --> Z[double]

    %% 리프 노드 녹색 지정
    style H fill:#90ee90
    style I fill:#90ee90
    style P fill:#90ee90
    style Q fill:#90ee90
    style R fill:#90ee90
    style S fill:#90ee90
    style T fill:#90ee90
    style U fill:#90ee90
    style V fill:#90ee90
    style W fill:#90ee90
    style X fill:#90ee90
    style Y fill:#90ee90
    style Z fill:#90ee90
    style C fill:#90ee90
    style D fill:#90ee90
    style E fill:#90ee90

단순 타입 13가지

  • 수치 타입(총 11가지) 정수 8종: sbyte/byte, short/ushort, int/uint, long/ulong 부동소수점 3종: float, double, decimal (decimal은 금액 고정밀 연산에 특화됨)
  • 비수치 타입(총 2가지): char(유니코드 단일 문자), bool(true/false 두 값만 가짐)

특징: C#은 C/C++와 달리 숫자 값을 직접 불린 판별 조건으로 사용할 수 없습니다.

비단순 참조 타입 3가지

string(문자열 시퀀스), object(모든 타입의 기본 클래스), dynamic(동적 언어 상호운용용)

C# 타입과 .NET 타입

모든 내장 미리 정의 타입은 하위 .NET 타입에 직접 매핑됩니다. C# 타입 키워드는 해당 .NET 타입의 별칭일 뿐이므로 .NET 원본 클래스명을 써도 정상 컴파일되지만 공식 가이드에서는 권장하지 않습니다. C# 코드 작성 시 .NET 전체 클래스명보다 C# 내장 키워드 별칭을 우선 사용하는 것이 좋습니다.

미리 정의 단순 타입

C# 키워드설명값 범위하위 .NET 타입기본값
sbyte8비트 부호 있는 정수-128 ~ 127System.SByte0
byte8비트 부호 없는 정수0 ~ 255System.Byte0
short16비트 부호 있는 정수-32768 ~ 32767System.Int160
ushort16비트 부호 없는 정수0 ~ 65535System.UInt160
int32비트 부호 있는 정수-2147483648 ~ 2147483647System.Int320
uint32비트 부호 없는 정수0 ~ 4294967295System.UInt320
long64비트 부호 있는 정수-9223372036854775808 ~ 9223372036854775807System.Int640
ulong64비트 부호 없는 정수0 ~ 18446744073709551615System.UInt640
float단정밀도 부동소수점1.5×10⁻⁴⁵ ~ 3.4×10³⁸System.Single0.0f
double배정밀도 부동소수점5×10⁻³²⁴ ~ 1.7×10³⁰⁸System.Double0.0d
bool불린 타입true / falseSystem.Booleanfalse
char유니코드 문자U+0000 ~ U+FFFFSystem.Char\x0000 (널 문자)
decimal고정밀도 십진수 (유효숫자 28자리)±1.0×10⁻²⁸ ~ ±7.9×10²⁸System.Decimal0m

미리 정의 비단순 타입

C# 키워드설명하위 .NET 타입
object단순 값 타입을 포함한 모든 타입의 기본 클래스System.Object
string0개 이상의 유니코드 문자로 구성된 문자열System.String
dynamic동적 언어 어셈블리 연동용 동적 타입고정 매핑되는 .NET 타입 없음

int = System.Int32, string = System.String은 본질적으로 완전 동일하며 컴파일러가 자동으로 상호 인식합니다.

코딩 규칙에서는 가독성 향상을 위해 반드시 C# 키워드(Int32 대신 int) 사용을 권장합니다.

단순 타입은 값 타입(Value Type)이라고도 부릅니다.

단일 값을 저장하며 스택 메모리에 할당됩니다.

선언 후 값을 직접 할당하지 않으면 표에 명시된 기본값이 자동 할당됩니다.

모든 단순 타입은 직접 object를 상속하며 박싱/언박싱 연산을 지원합니다. (뒤에서 다룸)

정수 계열 타입

  • u 접두사가 붙은 타입(uint/ushort/ulong/byte): 부호 없음, 음수 저장 불가;
  • sbyte/short/int/long: 부호 있음, 양수 및 음수 정수 저장 가능.

부동소수점 계열 타입

  • float: 단정밀도, 접미사 f. 정밀도는 낮지만 연산 속도가 빠르고 그래픽, 3D 연산에 적합;
  • double: 배정밀도, 접미사 d. 기본 부동소수점 리터럴 타입으로 범용 과학 연산에 사용;
  • decimal: 고정밀 십진수, 접미사 m. 금융, 통화 연산에 최적화되어 부동소수점 정밀도 손실이 발생하지 않음.

불린 타입과 문자 타입

  • bool: 두 가지 값만 존재하며 숫자와 암시적 형변환 불가;
  • char: 단일 유니코드 문자를 저장하며 내부적으로는 16비트 부호 없는 정수로 처리됨.

비단순 타입 (참조 타입 Reference Type)

  1. object: 모든 타입의 최상위 기본 클래스로 모든 값 타입, 참조 타입이 상속하며 박싱 메커니즘의 핵심;
  2. string: 특수한 참조 타입으로 문자열은 불변 객체이며 빈 문자열 ""는 유효한 기본 인스턴스;
  3. dynamic: 컴파일 타임 타입 검사를 건너뛰고 런타임에서 멤버를 분석합니다. 고정 .NET 매핑이 없고 Python/Ruby 등 동적 언어 연동에 주로 사용하며 컴파일 안정성을 희생하는 대신 유연성을 확보.
    static void Main(string[] args)
    {
        // 1. 8비트 정수
        sbyte sByteNum = -60;
        byte byteNum = 200;

        // 2. 16비트 정수
        short shortNum = -12000;
        ushort uShortNum = 50000;

        // 3. 32비트 정수
        int intNum = -888888;
        uint uIntNum = 3000000000U;

        // 4. 64비트 정수
        long longNum = -7000000000000L;
        ulong uLongNum = 12000000000000000UL;

        // 5. 부동소수점 타입
        float floatNum = 3.14f;
        double doubleNum = 2.71828;
        decimal decMoney = 999.99m;

        // 6. 불린 타입
        bool flag = true;

        // 7. 유니코드 문자
        char ch = 'A';

        // 8. 미리 정의 비단순 타입
        object obj = 123;
        string str = "FOXDEVELOP.COM";
        dynamic dy = "jack";
    }Code language: JavaScript (javascript)

내장 타입

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다