카테고리 없음

[C#] 기본값(default<T>) 총정리 – int, string, class, struct 다 정리

J.Note 2025. 6. 8. 15:06

default(T)는 C#에서 제네릭 타입 T에 대해 해당 타입의 "기본값"을 반환합니다.

기본값은 값 형식(Value Type) 과 참조 형식(Reference Type) 에 따라 달라집니다.


✅ 기본값 (default(T)) 정리

타입 종류 기본값 (default(T))
int 0
float 0.0f
double 0.0d
bool false
char '\\0' (널 문자)
DateTime 0001-01-01 00:00:00 (DateTime.MinValue)
struct  각 필드가 기본값인 구조체
enum 정의된 첫 번째 열거값의 값 (보통 0)
string  null
class null
Nullable<T> null

🎯 정리

  • 값 형식(Value Type) → 0, false, \0, DateTime.MinValue 등 비어있는 상태
  • 참조 형식(Reference Type) → 항상 null

⬇️예시 ⬇️


✅ 1. 기본형 타입 (값 형식, Value Types)

int i = default(int);
Console.WriteLine($"int: {i}");  // 출력: int: 0

float f = default(float);
Console.WriteLine($"float: {f}");  // 출력: float: 0

double d = default(double);
Console.WriteLine($"double: {d}");  // 출력: double: 0

bool b = default(bool);
Console.WriteLine($"bool: {b}");  // 출력: bool: False

char c = default(char);
Console.WriteLine($"char: [{c}]");  // 출력: char: [ ] → 널 문자 출력

✅ 2. 참조형 타입 (Reference Types)

string s = default(string);
Console.WriteLine($"string: {(s == null ? "null" : s)}");  // 출력: string: null

object o = default(object);
Console.WriteLine($"object: {(o == null ? "null" : o)}");  // 출력: object: null

MyClass mc = default(MyClass);
Console.WriteLine($"MyClass: {(mc == null ? "null" : mc.ToString())}");  // 출력: MyClass: null

class MyClass { }

✅ 3. 구조체 (Struct, 값 형식)

MyStruct ms = default(MyStruct);
Console.WriteLine($"MyStruct: X={ms.X}, Y={ms.Y}");  // 출력: MyStruct: X=0, Y=0

struct MyStruct 
{
    public int X;
    public int Y;
}

✅ 4. 열거형 (Enum)

MyEnum e = default(MyEnum);
Console.WriteLine($"MyEnum: {e}");  // 출력: MyEnum: None

enum MyEnum
{
    None = 0,
    One = 1,
    Two = 2
}

✅ 5. Nullable 타입 (Nullable<T> 또는 T?)

int? nullableInt = default(int?);
Console.WriteLine($"nullableInt: {(nullableInt.HasValue ? nullableInt.Value.ToString() : "null")}");
// 출력: nullableInt: null

bool? nullableBool = default(bool?);
Console.WriteLine($"nullableBool: {(nullableBool.HasValue ? nullableBool.Value.ToString() : "null")}");
// 출력: nullableBool: null

✅ 6. DateTime (값 형식)

DateTime dt = default(DateTime);
Console.WriteLine($"DateTime: {dt}");  // 출력: DateTime: 0001-01-01 00:00:00