카테고리 없음
[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