나만의 작은 도서관
[C#] 문법 정리 #9. Nullable, enum, var 본문
Nullable 타입
C#에서 기본 값 타입(int, float, bool 등)은 null 값을 허용하지 않는다. 그렇기 때문에 null 대신 "값이 없음"을 표현하기 위해 -1과 같은 값을 넣기도 하지만 Nullable 기능을 이용하면 기본 값 타입에도 null값을 할당할 수 있다.
사용법 및 예제
Nullable의 형식은 ? 연산자를 사용하여 선언한다. 예를 들어, int?는 int형에 null을 할당할 수 있는 Nullable<int> 형식을 의미한다.
int? nullableInt = null;
if (nullableInt.HasValue) // HasValue: 값이 있는지 여부를 반환 (true/false).
{
Console.WriteLine($"Value: {nullableInt.Value}"); // Value: 실제 값을 반환 (없으면 예외 발생).
}
else
{
Console.WriteLine("Value is null");
}
Nullable 타입의 사용 목적
- 데이터베이스와 같은 시스템에서 필드가 null일 수 있는 경우 처리.
- 값 타입에서 초기값이 불분명하거나 선택적 상태를 표현해야 할 때 사용.
Enum (열거형)
enum은 연관된 상수(Constant)들에 이름을 부여하고 집합으로 정의한 자료형이다. enum 사용 시 코드의 가독성과 유지보수를 향상된다. 기본적으로 enum은 정수형을 기반으로 하며, 각 요소는 정수 값과 대응된다.
선언부 예제
열거형 값은 기본값(0)에서 시작하지만 명시적으로 값을 지정할 수 있다.
enum Days
{
Sunday, // 0
Monday, // 1
Tuesday, // 2
Wednesday, // 3
Thursday, // 4
Friday, // 5
Saturday // 6
}
// 명시적 지정
enum HttpStatus
{
OK = 200,
NotFound = 404,
InternalServerError = 500
}
출력 예제
Days today = Days.Wednesday;
Console.WriteLine($"Today is: {today}"); // 출력: Today is: Wednesday
Console.WriteLine((int)today); // 출력: 3
// 열거열 형변환
string dayString = Days.Friday.ToString(); // Enum -> string
Days parsedDay = (Days)Enum.Parse(typeof(Days), "Friday"); // string -> Enum
int intValue = (int)today; // Enum -> int
Days enumValue = (Days)intValue; // int -> Enum
주의 사항
enum의 선언문은 클래스 외부 또는 클래스 내부의 전역 범위에서만 선언할 수 있으며, 메서드 내부에서는 선언할 수 없다. enum은 데이터 타입의 정의이기 때문에 프로그램 실행 중에 변경되거나 생성될 수 없으며, 컴파일 타임에 고정되어야 한다.
public class MyClass
{
public void Method()
{
enum MyEnum { A, B, C, D} // 이렇게 하면 에러 발생
MyEnum myEnum = MyEnum.A;
}
}
매직 타입 var
var는 C#에서 컴파일 시점에 타입을 추론하는 키워드이다. 변수 선언 시 명시적으로 타입을 지정하지 않고 초기화된 값으로 타입이 결정된다. var은 제너릭이나 익명 타입처럼 복잡한 타입을 저장할 때 유용하게 쓰일 수 있지만, 해당 타입이 어떤 타입인지 알기 어렵다는 점에서 코드 가독성을 저하시킬 수 있다.
주의 사항
반드시 초기화가 되어있어야 하며, 한 번 추론된 타입은 변경되지 않는다.
var x; // 오류 1(초기화 안됨)
var number = 10;
number = "Text"; // 오류 2(한 번 추론된 타입은 변경 X)
사용법 및 예제
var number = 10; // 컴파일러는 int로 추론
var message = "Hello, C#"; // 컴파일러는 string으로 추론
var numbers = new int[] {1, 2, 3}; // 컴파일러는 int[]로 추론
'Unity > 문법 및 메소드(System)' 카테고리의 다른 글
[C#] 문법 정리 #11. 델리게이트(Delegate), 람다(Lambda), 이벤트(event 키워드) (0) | 2024.11.23 |
---|---|
[C#] 문법 정리 #10. 예외 처리 (0) | 2024.11.23 |
[C#] 문법 정리 #8. out, ref 키워드 (0) | 2024.11.22 |
[C#] 문법 정리 #7. 값형과 참조형, 박싱과 언박싱 (0) | 2024.11.22 |
[C#] 문법 정리 #6. 인터페이스 (0) | 2024.11.21 |