[C#] null๊ณผ is, as

[์›๋ณธ ๋งํฌ]

nullable
null์€ ์•„๋ฌด๊ฒƒ๋„ ๊ฐ€๋ฆฌํ‚ค์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•˜๋Š” ์ผ์ข…์˜ ์ƒ์ˆ˜ ํฌ์ธํ„ฐ๋‹ค.
๊ทธ๋ž˜์„œ ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜์—๋Š” ์‚ฌ์šฉ์— ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.

๊ทผ๋ฐ ๊ฐ’ ํƒ€์ž…์„ ๋‹ค๋ฃฐ ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
int ๋ณ€์ˆ˜๋ฅผ ๋ณด์ž. ์‚ฌ์šฉ์ž์—๊ฒŒ์„œ ์ •์ˆ˜๊ฐ’์„ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ์„œ ์ž˜๋ชป๋œ ๊ฐ’์„ ๋ฐ›์•˜๊ฑฐ๋‚˜, ๋ฐ›์•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ๋ฅผ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•ด์•ผ ํ• ๊นŒ? 0? 0 ์ž์ฒด๋„ ๊ฐ’์ธ ์ƒํ™ฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
C๋Š” null์„ ๊ทธ๋ƒฅ 0์œผ๋กœ ํ‘œํ˜„ํ•ด๋ฒ„๋ฆฌ์ง€๋งˆ๋Š”.. C#์€ ์ด ๋ถ€๋ถ„์—์„œ๋Š” ์—„๊ฒฉํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ๊ฐ’ ํƒ€์ž…์—์„œ ์•„๋ฌด๊ฒƒ๋„ ์—†๋‹ค๋Š”๊ฑธ ์–ด๋–ป๊ฒŒ ๋‚˜ํƒ€๋‚ด์•ผ ํ• ๊นŒ
์ด๋Ÿด ๋•Œ ๊ฐ’ ํƒ€์ž…์— null์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๊ธด๊ฒŒ nullable์ด๋‹ค.

์›๋ž˜ ์ œ๋„ค๋ฆญ๋ฐฉ์‹์œผ๋กœ
Nullable num;
์ด๋Ÿฌ๋ฉด null์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” int ํƒ€์ž…์ด ์™„์„ฑ๋œ๋‹ค. ๊ทผ๋ฐ ์ฉ ๋ณด๊ธฐ ์ข‹์ง€๋Š” ์•Š๋‹ค.

์—ฌ๊ธฐ์—์„œ ์„คํƒ•์„ ์น˜๋ฉด
int? num;
์ด๋ ‡๊ฒŒ ํ‘œํ˜„๋œ๋‹ค.

๊ทผ๋ฐ ํ—ท๊ฐˆ๋ฆด๋งŒํ•œ๊ฒŒ ์ข€ ์žˆ์œผ๋‹ˆ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด์ž
https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/nullable-types/using-nullable-types

image Nullable ํ˜•์‹ ์‚ฌ์šฉ(C# ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€์ด๋“œ)Nullable ํ˜•์‹ ์‚ฌ์šฉ(C# ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€์ด๋“œ) ์ฝ๋Š” ๋ฐ 8๋ถ„ ์ฐธ๊ฐ€์ž nullable ํ˜•์‹์€ ๊ธฐ๋ณธ ํ˜•์‹์˜ ๋ชจ๋“  ๊ฐ’๊ณผ ์ถ”๊ฐ€ null ๊ฐ’์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. nullable ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ์„ ์–ธ๋ฉ๋‹ˆ๋‹ค. System.Nullable variable ๋˜๋Š” T? variable T ๋Š” nullable ํ˜•์‹์˜ ๊ธฐ๋ณธ ํ˜•์‹์ž…๋‹ˆ๋‹ค. T ๋Š” struct ๋ฅผ ๋น„๋กฏํ•œ ๋ชจ๋“  ๊ฐ’ ํ˜•์‹์ผ ์ˆ˜ ์žˆ์œผ๋‚˜, ์ฐธ์กฐ ํ˜•์‹์ผ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. nullable ํ˜•์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์˜ˆ๋ฅผ ๋“ค๊ธฐ ์œ„ํ•ด ์ผ๋ฐ˜ ๋ถ€์šธ ๋ณ€์ˆ˜๊ฐ€ ๋‘ ๊ฐ€์ง€ ...docs.microsoft.com https://msdn.microsoft.com/ko-kr/library/b3h38hb0(v=vs.110).aspxNullable(T) ๊ตฌ์กฐ์ฒด (System)์ด ๋ฌธ์„œ๋Š” ๊ธฐ๊ณ„ ๋ฒˆ์—ญ์„ ์ด์šฉํ•˜์—ฌ ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ์˜๋ฌธ์œผ๋กœ ๋ณด๋ ค๋ฉด ์˜๋ฌธ ํ™•์ธ๋ž€์„ ์„ ํƒํ•˜์„ธ์š”. ๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ๋ฅผ ํ…์ŠคํŠธ ์œ„๋กœ ์ด๋™์‹œ์ผœ ํŒ์—… ์ฐฝ์—์„œ ์˜๋ฌธ ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒˆ์—ญ ์˜๋ฌธ Nullable ๊ตฌ์กฐ์ฒด .NET Framework (current version) ๋‹ค๋ฅธ ๋ฒ„์ „ Visual Studio 2010 .NET Framework 4 Silverlight Visual Studio 2008 .NET Framework 3.5 .NET Framework 3.0 .NET Framework 2.0 ๊ฒŒ์‹œ ๋‚ ์งœ: 201...msdn.microsoft.com


As
as๋Š” ์บ์ŠคํŒ… ์—ฐ์‚ฐ์ž๋‹ค. ์ด๊ฑด ๊ทธ๋ƒฅ ์†Œ๊ด„ํ˜ธ ์บ์ŠคํŒ…๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ฐธ์กฐํƒ€์ž…์œผ๋กœ์˜ ๋ณ€ํ™˜๋งŒ ํ—ˆ์šฉ์„ ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์‹คํŒจํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ์•„๋‹ˆ๋ผ null์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
์ด null์˜ ๋ฐ˜ํ™˜๊ฐ€๋Šฅ์„ฑย ๋•Œ๋ฌธ์— ์ฐธ์กฐํƒ€์ž…์œผ๋กœ๋งŒ ๋ณ€ํ™˜์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
์šฉ๋ฒ•์€ ๋Œ€๊ฐ• ์ด๋ ‡๋‹ค.

๋ณ€ํ™˜ํ• ๊ฐ’ as ๋ณ€ํ™˜ํ• ํƒ€์ž…




Is
is๋Š” ์›๋ž˜ ๊ทธ๋ƒฅ ํƒ€์ž…๋ณ€ํ™˜ ๊ฐ€๋Šฅ์—ฌ๋ถ€๋งŒ ์ฒดํฌํ•˜๋Š” ์—ฐ์‚ฐ์ž์˜€๋‹ค.

๋ณ€์ˆ˜ is ํƒ€์ž…;

ํ•ด์„œ ๋ณ€ํ™˜์ด ๋˜๋Š” ์ƒํ™ฉ์ด๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋์ด์—ˆ๋Š”๋ฐ,

๋ฒ„์ „ 7.0๋ถ€ํ„ฐ as์˜ ๊ธฐ๋Šฅ์„ ์–ด๋А์ •๋„ ํฌํ•จํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๋ณ€์ˆ˜ is ํƒ€์ž… ๋ฐ”์ธ๋”ฉ๋ณ€์ˆ˜;
ํ•ด์„œ is์˜ ๊ฒฐ๊ณผ๊ฐ€ true๋ฉด ์ €๊ธฐ๋‹ค ๋ฐ”์ธ๋”ฉ์„ ํ•ด์ค€๋‹ค.

if์˜ ์กฐ๊ฑด๋ฌธ ๋‚ด์—๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๊ฑฐ๋„ ํŒจํ„ด๋งค์นญ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋”๋ผ