Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 파이썬
- 빗썸api
- #csharp #산술오버플로우 #checked #unchecked #overflowexception #정수연산 #오버플로우처리 #csharp세미나 #디버깅 #성능최적화
- 빛썸
- #csharp #비트연산자 #bitwiseoperators #flagsenum #masking #시프트연산 #비트연산 #성능최적화 #csharp세미나 #하드웨어제어
- #csharp #부동소수점 #nan #infinity #특수값 #ieee754 #수치계산 #double #float #decimal #csharp세미나
- 자동매매
- #csharp #배열 #다차원배열 #가변배열 #배열초기화 #indexrange #span #배열비교 #csharp기초 #배열세미나
- c#string
- c#
- 무노동수입
- c#bool
- #csharp #double #decimal #실수형 #정밀도 #부동소수점 #고정소수점 #금융계산 #과학계산 #csharp세미나 #닷넷기초
- #csharp #산술연산자 #arithmeticoperators #기초프로그래밍 #csharp기초 #연산자우선순위 #정수연산 #실수연산 #math클래스 #나눗셈예외 #csharp세미나 #닷넷개발 #프로그래밍입문
- #csharp #스택과힙 #메모리구조 #값형식 #참조형식 #박싱 #가비지컬렉션 #힙메모리 #메서드스택 #csharp세미나
- #csharp #bool #boolean #논리연산자 #부울연산자 #단락평가 #조건문 #csharp기초 #삼항연산자 #csharp세미나
- 테더
- #csharp #조건연산자 #삼항연산자 #논리연산자 #단락평가 #ifelse축약 #조건문 #프로그래밍기초 #csharp세미나
- #csharp #기본값 #definiteassignment #default키워드 #초기화규칙 #구조체초기화 #null값 #csharp세미나
- #csharp #매개변수 #ref #out #params #명명된인수 #선택적매개변수 #메서드전달 #csharp세미나
- #csharp #var키워드 #타입추론 #암묵적형식지정 #익명형식 #linq #지역변수 #csharp세미나
- #csharp #관계연산자 #상등연산자 #equals #비교연산 #null비교 #float비교 #csharp기초 #csharp세미나 #문자열비교
- #csharp #표현식 #배정표현식 #void표현식 #연산자 #산술연산자 #조건연산자 #표현식기초 #csharp세미나
- #csharp #연산자우선순위 #결합성 #operatorprecedence #연산자결합 #오른쪽결합 #왼쪽결합 #csharp세미나
- #csharp #부동소수점 #반올림오차 #실수계산 #float #double #decimal #mathround #정확도비교 #csharp세미나
- #csharp #수치형식 #numerictypes #리터럴 #형식추론 #접미사 #decimal #float #double #프로그래미링기조 #그래피포뷰
- #csharp #수치변환 #형식변환 #자동변환 #명시변환 #convert #parse #tryparse #csharp세미나
- #csharp #널연산자 #nulloperator #널조건부연산자 #널접합연산자 #nullcheck #csharp세미나 #nullsafe #코드안정성
- USDT
- #csharp #문자열 #문자 #string #char #문자열보간 #문자열연결 #문자열비교 #형식지정자 #문자변환 #csharp세미나
Archives
- Today
- Total
맛있는 개발노트 (맛과 개발을 함께)
C# 세미나 자료: 확정 배정 및 기본 값 (Definite Assignment & Default Values) 본문
C# 학습/C# 언어의 기초
C# 세미나 자료: 확정 배정 및 기본 값 (Definite Assignment & Default Values)
DevGourmet 2025. 4. 8. 01:301. 개요
C#은 안정성과 예측 가능한 실행을 보장하기 위해 변수의 사용 전에 반드시 초기화되어야 한다는 규칙을 갖습니다. 이를 **확정 배정(definite assignment)**이라 하며, 값 형식의 변수는 초기화 없이 사용할 수 없습니다. 또한 C#은 특정 상황에서 변수의 **기본 값(default value)**을 자동 지정해주기도 합니다.
본 세미나에서는 확정 배정의 개념과 컴파일러 검사 방식, 기본 값의 의미와 사용 위치 등을 단계별로 설명합니다.
2. 확정 배정(Definite Assignment)
2.1 개념
- 지역 변수는 명시적 초기화 없이 사용 시 컴파일 오류 발생
int x;
Console.WriteLine(x); // 오류: 사용 전에 초기화되지 않음
- 조건문, 반복문 등에서 모든 경로에서 초기화되는지 컴파일러가 검사함
int y;
if (flag)
y = 10;
else
y = 20;
Console.WriteLine(y); // OK: 모든 경로에서 초기화됨
2.2 예외: 필드, 배열 요소, 클래스 멤버는 자동 초기화
class Sample
{
int number; // 기본값 0
bool isReady; // 기본값 false
string name; // 기본값 null
}
3. 기본 값(Default Values)
3.1 기본값 표 (주요 값 형식)
형식기본 값
int, long, short | 0 |
bool | false |
char | '\0' (널 문자) |
float, double | 0.0 |
string, object | null |
사용자 정의 참조형 | null |
3.2 default 키워드 사용
int a = default; // 0
bool b = default(bool); // false
string s = default; // null
- 제네릭에서도 유용하게 사용됨
public T GetDefault<T>()
{
return default(T);
}
4. 단계별 설명
4.1 초급: 지역 변수 초기화 오류 방지
int count = 0;
Console.WriteLine(count); // OK
4.2 중급: 조건문 내 확정 배정 검사
int value;
if (flag)
value = 1;
// else value를 초기화하지 않으면 오류
Console.WriteLine(value); // 컴파일 오류 발생 가능
- 모든 분기 조건에서 값이 설정되어야 함
4.3 고급: 구조체와 기본값
struct Point {
public int X;
public int Y;
}
Point p = default;
Console.WriteLine(p.X); // 0
- 구조체도 모든 필드를 기본값으로 초기화함
5. 주의사항 및 팁
- 참조형 필드는 자동 초기화되지만, 지역 변수는 반드시 수동 초기화 필요
- default 키워드는 특히 제네릭과 함께 유용함
- null 초기화 여부 확인 시 string.IsNullOrEmpty() 또는 == null 비교 필요
- 구조체는 new 없이 생성 시에도 모든 필드가 0으로 초기화됨
6. 결론
- C#의 확정 배정 규칙은 코드 안정성과 오류 방지를 위한 중요한 기능
- 지역 변수는 항상 명시적으로 초기화할 것
- 기본값은 타입에 따라 자동 지정되며, 필요한 경우 default 키워드로 설정 가능
- 제네릭, 구조체, 필드 등 다양한 맥락에서 기본값 이해가 필요함
7. Q&A
Q1. 지역 변수 외에도 명시적 초기화가 필요한 게 있나요?
A1. 아니요. 필드, 배열 요소, 클래스 멤버 등은 자동으로 기본값으로 초기화됩니다.
Q2. 기본값을 null로 가지는 형식은 어떤 것인가요?
A2. string, object, class와 같은 참조형은 기본값이 null입니다.
Q3. default 키워드는 모든 형식에 사용 가능한가요?
A3. 네. 값 형식과 참조 형식 모두 지원하며, 제네릭에서도 안전하게 사용됩니다.
Q4. 구조체를 초기화하지 않고 사용할 수 있나요?
A4. new 없이 생성된 구조체도 모든 필드가 자동으로 기본값으로 초기화됩니다.
'C# 학습 > C# 언어의 기초' 카테고리의 다른 글
C# 세미나 자료: 표현식과 연산자 (Expressions & Operators) (0) | 2025.04.08 |
---|---|
C# 세미나 자료: var 키워드를 이용한 지역 변수의 암묵적 형식 지정 (0) | 2025.04.08 |
C# 세미나 자료: 스택과 힙 (Stack & Heap) (0) | 2025.04.08 |
C# 세미나 자료: 매개변수 (Parameters) (0) | 2025.04.08 |
C# 세미나 자료: 배열 (Array) (0) | 2025.04.08 |