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