[TIL] C# - Nullable

MINO·2024년 5월 4일
0
post-thumbnail

2024-05-03

C# - 직렬화 & 역직렬화 를 공부하며 C# 공식 문서를 찾아보다가
string? 과 같은 매개 변수를 발견하였다.

string 뒤에 붙은 '?' 는 무엇일까 ? 하는 궁금증에서 오늘의 TIL 주제가 나오게 되었다.


Null

참조형 변수가 어떠한 객체를 참조하지 않을 때 사용된다.


Nullable

C# 에서 Null 값을 가질 수 있는 값형에 대한 특별한 형식이다.

  • Null 허용 값 형식은 기본 T 값 형식 T의 모든 값과 추가 null 값을 나타낸다.

예시 - bool?

bool? 값 형식은

기본 T 값 형식 T의 모든 값 : true , false 와 null 값 중 하나를 할당할 수 있다는 뜻의 Nullable<bool> 형식을 나타낸다다.


코드

int? nullableInt = null;
double? nulladbleDouble = 3.14;

nullableInt = 10; // 값 할당
int intValue = nullableInt.Value; // 값 접근

if(nullableDouble.HasValue)
	Console.WriteLine("nullableDouble 값 : " + nullableDouble.Value);
    
else
	Console.WriteLine("nullableDouble 은 null.");
    
// null 병합 연산자 : 값이 null 이면 0 을 반환
int nonNullableInt = nullableInt ?? 0;

nullable 을 사용하여, 예외처리를 보다 쉽게 할 수 있다.


SerializeObject 예시

직렬화 SerializeObject 메서드의 원형이다.

public static string SerializeObject(object? value, Formatting formatting)
{
    return SerializeObject(value, formatting, (JsonSerializerSettings?)null);
}

object? value 를 통해
어떤 객체를 매개 변수로 받았을 때, null 형식일 수도 있다는 것을 알 수 있다.


TIL 마무리

프로젝트의 대부분의 기능 구현은 끝나가고, 리팩토링과 UI 를 개선하는 과정이다.

처음 코드를 작성할 때 나름 클래스화 했다고 생각했지만, 리팩토링을 하다보니 개선해야할 점이 많아보였다.

profile
안녕하세요 게임 개발하는 MINO 입니다.

0개의 댓글