C#

[C#] Nullable Type

🟦 Nullable Type

null 값을 κ°€μ§ˆ 수 μ—†λŠ” 데이터 νƒ€μž…μ„ null 값을 κ°€μ§ˆ 수 μžˆλ„λ‘ ν•˜λŠ” νƒ€μž…μ΄λ‹€.

예λ₯Ό λ“€μ–΄ bool νƒ€μž…μ€ 였직 true, false κ°’λ§Œμ„ κ°€μ§ˆ 수 μžˆλ‹€. (μ΄ˆκΈ°ν™”λ₯Ό ν•˜μ§€μ•ŠμœΌλ©΄ false)

nullable type을 μ‚¬μš©ν•˜λ©΄ null 값을 κ°€μ§ˆ 수 μžˆλ‹€.

 

🟧 Document

Nullable Type λ¬Έμ„œ

 

 

 

🟧 μ„ μ–Έ

int a = 0;	// κΈ°λ³Έ νƒ€μž…
int? b = null;	// nullable type
int? c = a;	// nullable type에 값을 넣을 μˆ˜λ„ 있음

- 데이터 νƒ€μž… 뒀에 ? 문자λ₯Ό λΆ™μ—¬μ€€λ‹€.

 

 

 

🟧 κΈ°λ³Έκ°’ 검사

int? a = 1;
if(a.HasValue)
{
	// 값이 있음. 즉 null 값이 μ•„λ‹˜.
}
else
{
	// null을 λ‹΄κ³ μžˆμŒ.
}

- HasValue 속성을 μ΄μš©ν•˜μ—¬ ν•΄λ‹Ή λ³€μˆ˜μ— 값이 ν• λ‹Ήλ˜μ–΄ μžˆλŠ”μ§€ 체크할 수 μžˆλ‹€.

 

 

 

🟧 κ°’ κ°€μ Έμ˜€κΈ°

int? a = 1;
if(a.HasValue)
{
	Console.WriteLine($"a is {a.Value}");
}

- Value 속성을 μ΄μš©ν•˜μ—¬ ν•΄λ‹Ή λ³€μˆ˜μ— ν• λ‹Ήλ˜μ–΄μžˆλŠ” 값을 κ°€μ Έμ˜¬ 수 μžˆλ‹€.

 

 

 

int? a = 1;
Console.WriteLine($"a is {a.GetValueOrDefault()}");	// a is 1

a = null;
Console.WriteLine($"a is {a.GetValueOrDefault()}");	// a is 0

- GetValueOrDefault λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ 값을 κ°€μ Έμ˜¬ 수 μžˆλ‹€.

- ν•΄λ‹Ή λ³€μˆ˜μ— 값이 ν• λ‹Ήλ˜μ–΄ μžˆλ‹€λ©΄, κ·Έ 값이 return λœλ‹€.

- ν•΄λ‹Ή λ³€μˆ˜μ— 값이 ν• λ‹Ήλ˜μ–΄ μžˆμ§€ μ•Šλ‹€λ©΄, κΈ°λ³Έ 데이터 νƒ€μž…μ˜ default 값이 return λœλ‹€.

더보기

- defualt κ°’

숫자 : 0

char : \0

string : null

 

 

 

🟧 μ£Όμ˜μ 

- ν• λ‹Ήλœ 값이 μ—†λŠ” μƒνƒœλ‘œ Value속성을 μ‚¬μš©ν•˜κ²Œ λœλ‹€λ©΄ μ˜ˆμ™Έλ₯Ό λ˜μ§„λ‹€.

  λ”°λΌμ„œ HasValue 속성을 μ‚¬μš©ν•˜μ—¬ 값체크λ₯Ό λ¨Όμ €ν•œ ν›„ μ‚¬μš©ν•΄μ•Όν•œλ‹€.

'C#' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[C#] ref & out  (0) 2022.10.26
Interface, Abstract, Virtual  (0) 2021.11.12
C# 주석에 λŒ€ν•œ XML νƒœκ·Έ  (0) 2021.11.01