C#์์ ๊ฐ ํ์(value type)์ ํด๋นํ๋ ์๋ฃํ๋ค์ด ์๋ค. (byte, int, float, ...)
์ด๋ฐ ๊ฐ ํ์์ ๋ณ์๋ค์ ์ด๊ธฐํํด์ ์ฌ์ฉํ์ง ์์ผ๋ฉด C# ์ปดํ์ผ๋ฌ๋ ์ปดํ์ผ์กฐ์ฐจ ํด์ฃผ์ง ์๋๋ค.
ํ์ง๋ง, ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ์ด๋ฐ ๊ฐ ํ์์ ๋ฐ์ดํฐ์๋ ์ด๋ ํ ๊ฐ๋ ๊ฐ์ง์ง ์๊ฒ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์๋ค.
์ฐธ์กฐ ํ์(reference type)์ null์ ์ค ์ ์์ง๋ง, ๊ฐ ํ์์๋ null์ ์ค ์๊ฐ ์๋ค.
๊ทธ๋์, C#์์๋ ์ด๋ฐ ๊ฐ ํ์ ์๋ฃํ ๋ณ์์๋ null ๊ฐ์ ํ ๋นํ ์ ์๋๋ก Nullable ํ์์ด๋ ๊ฑธ ์ง์ํ๋ค.
Nullable
๊ฐ ํ์์ ํํด์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ ์ธํ๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ฐ์ดํฐํ์
? ๋ณ์์ด๋ฆ;
์ฌ์ฉ ์์๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ธ ์ ์๋ค.
// int data = null; ์ค๋ฅ
int? data = null;
hasValue์ Value ์์ฑ
๋ชจ๋ Nullable ํ์์ hasValue์ Value ์์ฑ์ ๊ฐ์ง๋ค.
int? data = null;
Console.WriteLine(data.HasValue); // data๋ null์ด๋ฏ๋ก False ์ถ๋ ฅ
int a = 100;
Console.WriteLine(a.HasValue); // a = 100 ์ด๋ฏ๋ก True ์ถ๋ ฅ
Console.WriteLine(a.Value); // 100 ์ถ๋ ฅ
๋ง์ฝ HasValue = False์ธ๋ฐ Value๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, CLR์ InvalidOperationException ์์ธ๋ฅผ ๋์ด๋ค.
'๐ฏ๏ธLanguage > C#' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C#] TryParse() VS Parse() (0) | 2022.03.13 |
---|---|
[C#] Null๊ณผ ๊ด๋ จ๋ ์ฐ์ฐ์๋ค(?, [ ]?, ??) (0) | 2022.03.13 |
[C#] ๋ฌธ์์ด ์์ ๋ง์ถ๊ธฐ (string.Format(), ๋ฌธ์์ด ๋ณด๊ฐ) (0) | 2022.03.09 |
[C#] CLR(Common Language Runtime)๊ณผ ๋ค์ดํฐ๋ธ ์ฝ๋(Native Code) (0) | 2022.03.09 |
[C#] ํ๋กํผํฐ(Property) (0) | 2022.02.15 |