๐ฆ Nullable Type
null ๊ฐ์ ๊ฐ์ง ์ ์๋ ๋ฐ์ดํฐ ํ์ ์ null ๊ฐ์ ๊ฐ์ง ์ ์๋๋ก ํ๋ ํ์ ์ด๋ค.
์๋ฅผ ๋ค์ด bool ํ์ ์ ์ค์ง true, false ๊ฐ๋ง์ ๊ฐ์ง ์ ์๋ค. (์ด๊ธฐํ๋ฅผ ํ์ง์์ผ๋ฉด false)
nullable type์ ์ฌ์ฉํ๋ฉด null ๊ฐ์ ๊ฐ์ง ์ ์๋ค.
๐ง Document
๐ง ์ ์ธ
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 |