º¯¼ö´Â ŸÀÔ¿¡ µû¶ó Ç¥Çö ¹üÀ§°¡ Á¤ÇØÁ® ÀÖ´Ù. byte´Â 0 ~ 255±îÁöÀÇ Á¤¼ö¸¦ Ç¥ÇöÇϸç boolÀº true, false µü µÎ °¡Áö »óŸ¸ Ç¥ÇöÇÑ´Ù. int´Â 40¾ï°¡Áö³ª Ç¥ÇöÇÒ ¼ö ÀÖÁö¸¸ ¹üÀ§°¡ À¯ÇÑÇÏ´Ù´Â °ÍÀº °°´Ù. °³¹ßÀÚ´Â
Ç¥ÇöÇÒ ¹üÀ§¿¡ ¸Â´Â ŸÀÔÀ» ¼±ÅÃÇؼ »ç¿ëÇÑ´Ù.
ÇÏÁö¸¸ Çö½Ç¿¡¼´Â °¡´ÉÇÑ °ª Áß ¾î´À °Íµµ ¾Æ´Ñ °æ¿ì°¡ Á¸ÀçÇÑ´Ù. boolÇüÀÇ bMale º¯¼ö·Î ¼ºº°À» Ç¥ÇöÇÏ¸é ³²ÀÚ, ¿©ÀÚ µÑ ÁßÀÇ »óŸ¦ ÀúÀåÇÒ
¼ö ÀÖ¾î º° ¹®Á¦¾ø¾î º¸ÀδÙ. ±×·¯³ª ¼ºº°¶õÀ» ºñ¿ö µÑ ¼öµµ ÀÖ°í ¾ÆÁ÷ ¼ºº°À» ¸ð¸£´Â žƵµ ÀÖ´Ù. ¼ºÀûÀº 0 ~ 100ÀÇ ¹üÀ§¿¡ ºÐÆ÷ÇÏÁö¸¸ °á¼®, äÁ¡Áß, ÀüÇÐ, ºÎÁ¤
ÇàÀ§ µî °áÁ¤ÇÒ ¼ö ¾ø´Â »óŵµ ÀÖ´Ù.
¾Ë¼ö ¾ø°Å³ª ¹Ì°áÁ¤µÈ °ªÀ» ³ÎÀ̶ó°í ÇÏ¸ç µ¥ÀÌÅͺ£À̽º¿¡¼ ÈçÈ÷ »ç¿ëÇÑ´Ù. ³ÎÀº
°ªÀ̶ó±âº¸´Ù´Â ÀÏÁ¾ÀÇ »óÅÂÀÌ´Ù. ³Î »óŸ¦ Ç¥ÇöÇϱâ À§ÇØ ÈçÈ÷ ƯÀÌ°ªÀ» »ç¿ëÇÑ´Ù. ¼ºÀûÀº -1À̳ª 101ó·³
Á¤»óÀûÀÎ ¼ºÀûÀÌ ¾Æ´Ñ °ªÀ» ¼±Á¤ÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ boolÇüÀº
ƯÀÌ°ªÀ¸·Î ¾µ¸¸ÇÑ °ªÀÌ ¾ø¾î ÀÌ ¹æ¹ýÀº ÇÑ°è°¡ ÀÖ´Ù. ±×·¡¼ µ¥ÀÌÅͺ£À̽º´Â ³Î »óŸ¦ Ưº°È÷ °ü¸®ÇÑ´Ù.
³Î °¡´É ŸÀÔÀº ƯÁ¤ ŸÀÔÀÇ ¸ðµç °ª°ú ÇÔ²² ³Î »óűîÁö Ç¥ÇöÇϴ ŸÀÔÀÌ´Ù. ³»ºÎ
ŸÀÔ T¿¡ ´ëÇÑ ³Î °¡´É ŸÀÔÀº
System.Nullable<T>·Î Ç¥ÇöÇÏ¸ç ´ÙÀ½ ¼±¾ð¹®Àº ³Î °¡´É T ŸÀÔÀÇ
º¯¼ö¸¦ ¼±¾ðÇÑ´Ù.
System.Nullable<T> º¯¼ö¸í;
T ŸÀÔÀ» ·¡ÇÎÇÏ´Â Á¦³×¸¯ Ŭ·¡½ºÀÌ´Ù. ¼±¾ð¹®ÀÌ ³Ê¹« ±æ±â ¶§¹®¿¡ C#Àº ŸÀÔ ´ÙÀ½¿¡ ? ±âÈ£¸¦ »ç¿ëÇÏ¿© T? ·Î Ç¥±âÇÏ´Â ¹æ¹ýÀ» Áö¿øÇÑ´Ù.
byte? Value; //
0~255 ¶Ç´Â null Áß ÇÑ °ªÀ» °¡Áø´Ù.
bool? bLuner; //
true, false, null Áß ÇÑ °ªÀ» °¡Áø´Ù.
? ¾Õ¿¡ ÀÖ´Â T¸¦ ³»Àå
ŸÀÔÀ̶ó°í Çϴµ¥ °ª ŸÀÔ¸¸ ¿Ã ¼ö ÀÖÀ¸¸ç ÂüÁ¶ÇüÀº ¾ÈµÈ´Ù. ¿Ö³ÄÇϸé Ŭ·¡½º °°ÀÌ º¹ÀâÇÑ Å¸ÀÔÀº ³Î
»óŸ¦ Á¤ÀÇÇϱ⠾ָÅÇϱ⠶§¹®ÀÌ´Ù. ³Î °¡´É ŸÀÔÀÇ ¹è¿À» Á¤ÀÇÇÏ´Â °ÍÀº °¡´ÉÇÏ´Ù. int?[] arAge; ´Â 10°³ÀÇ ³ªÀÌ°ªÀÌµÇ °¢ ¿ä¼Ò°¡ ³Î »óÅÂÀÏ
¼ö ÀÖ´Ù. T? ŸÀÔÀº ´ÙÀ½ µÎ °³ÀÇ Àбâ Àü¿ë ÇÁ·ÎÆÛƼ¸¦ °¡Áø´Ù.
l HasValue : °ªÀÌ Á¤ÀǵǾî ÀÖ´ÂÁö Á¶»çÇÑ´Ù. trueÀ̸é Á¦´ë·Î
µÈ °ªÀÌ ÀúÀåµÇ¾î ÀÖ´Â °ÍÀÌ°í falseÀÌ¸é ¾ÆÁ÷ °áÁ¤µÇÁö ¾ÊÀº ³Î »óÅÂÀÌ´Ù. ÀÌ ÇÁ·ÎÆÛƼ·Î ³Î ¿©ºÎ¸¦ Á¶»çÇÒ ¼ö ÀÖÀ¸¸ç º¯¼ö¸¦ null°ú Á÷Á¢
ºñ±³ÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù.
l Value : ³»ºÎ ŸÀÔÀÇ ½ÇÁ¦°ªÀÌ¸ç º¯¼ö ÀÚü¸¦ Àд °Í°ú °°´Ù. ³ÎÀÌ
¾Æ´Ï¶ó¸é ½ÇÁ¦°ªÀÌ ÀÐÇôÁöÁö¸¸ ³ÎÀ̶ó¸é InvalidOperationException ¿¹¿Ü°¡ ¹ß»ýÇÑ´Ù. ³Î °¡´É ŸÀÔÀÇ µðÆúÆ®´Â nullÀ̸ç À̶§ Value´Â ¾Ë ¼ö ¾ø´Â ¾²·¹±â °ªÀ» °¡Áø´Ù.
³Î °¡´ÉÇÑ Å¸ÀÔÀº °ª ¿Ü¿¡µµ nullÀ̶ó´Â Ư¼öÇÑ »óÅÂÀÏ ¼ö ÀÖ¾î
ÀÐÀ» ¶§ Ç×»ó null ¿©ºÎ¸¦ ½Å°æ½á¾ß ÇÑ´Ù.
Nullable |
|
using
System; class CSTest
{ public
static void Main() { int?
Age; Age
= 3; if
(Age.HasValue) { Console.WriteLine(Age); }
else { Console.WriteLine("¾Ë
¼ö ¾ø´Â ³ªÀÌÀÓ"); } } } |
|
½ÇÇà°á°ú |
3 |
³Î °¡´ÉÇÑ Á¤¼öÇü º¯¼ö Age¸¦ ¼±¾ðÇß´Ù. °ªÀ» °¡Áö°í ÀÖÀ¸¸é ½ÇÁ¦°ªÀ» Ãâ·ÂÇÏ°í ±×·¸Áö ¾ÊÀ¸¸é ¾Ë ¼ö ¾ø´Ù´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. »ç¿ëÀÚ°¡ ÀÔ·ÂÀ» °ÅºÎÇߴٰųª ÀÔ·ÂÁß ¿¡·¯°¡ ¹ß»ýÇÏ¿© ³ÎÀÌ µÉ ¼öµµ ÀÖ´Ù.
Age.HasValue´Â Age
!= null Á¶°Ç°ú °°°í Age´Â Age.Value¿Í
°°´Ù. ³Î °¡´É ŸÀÔ¿¡ ´ëÇÑ ¿¬»ê ±ÔÄ¢Àº ÀÏ¹Ý º¯¼ö¿Í À¯»çÇϵÇ
null Å°¿öµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ°í ¿¬»ê °á°úµµ nullÀÏ ¼ö ÀÖ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. °ªÀ» Àд Áß¿¡ ¿¹¿Ü°¡ ¹ß»ýÇÒ ¼öµµ ÀÖ´Ù. ³Î °¡´É ŸÀÔ°ú ÀϹÝ
ŸÀÔÀ» ´ëÀÔÇÒ ¶§ÀÇ ±ÔÄ¢Àº ´ÙÀ½°ú °°´Ù.
int i;
int? n;
i = n; //
¿¡·¯. ŸÀÔÀÌ ´Þ¶ó ´ëÀÔ ºÒ°¡
i = (int)n; //
ÄÄÆÄÀÏ °¡´ÉÇϳª nÀÌ nullÀÏ °æ¿ì ¿¹¿Ü ¹ß»ý
i = n.Value; //
ÄÄÆÄÀÏ °¡´ÉÇϳª nÀÌ nullÀÏ °æ¿ì ¿¹¿Ü ¹ß»ý
n = i; //
Ç×»ó °¡´É. nÀÌ iº¸´Ù Ç¥Çö ¹üÀ§°¡ ´õ ³Ð´Ù.
n = null; //
Ç×»ó °¡´É
¿·ÀÇ ÁÖ¼®À» ÀÐ¾î º¸¸é »ó½Ä¿¡ Å©°Ô À§¹èµÇ´Â Á¡ÀÌ ¾ø´Ù. ÁÖÀÇÇÒ °ÍÀº
³Î °¡´ÉÇÑ Å¸ÀÔ³¢¸® ºñ±³ÇÒ ¶§Àε¥ µÑ Áß Çϳª¶óµµ nullÀÌ¸é ºñ±³ °á°ú´Â nullÀÌ µÈ´Ù.
int? a = null;
int? b = 12;
int? c = null;
if (a == b) //
°ÅÁþ
if (a == c) //
°ÅÁþ
³ÎÀÎ a¿Í °ªÀ» °¡Áö°í ÀÖ´Â b°¡
´Ù¸¥ °ÍÀº »ó½ÄÀûÀÌÁö¸¸ µÑ ´Ù nullÀÎ a¿Í c°¡ ´Ù¸¥ °ÍÀº ¹º°¡ ÀÌ»óÇØ º¸ÀδÙ. ¶È°°Àº nullÀÌ ´Ù¸¦ ¼ö ÀÖ´Ù´Â °ÍÀÌ nullÀÇ Æ¯¼öÇÔÀÌ´Ù. Àß »ý°¢ÇØ º¸¸é Á¤ÇØÁöÁöµµ ¾ÊÀº µÎ »óÅ°¡ °°´Ù°í Æò°¡ÇÏ´Â °ÍÀÌ ¿ÀÈ÷·Á ³í¸®ÀûÀÎ ¸ð¼øÀÌ´Ù. ±×·¡¼ null³¢¸®´Â ´Ù¸£´Ù°í º»´Ù.
ºñ½ÁÇÑ ³í¸®°¡ ¼öÇп¡µµ Á¸ÀçÇϴµ¥ ¡Ä + 1Àº ¿ª½Ã ¡ÄÀÌ´Ù. ¾î¶² ¼ö¿¡ 1À» ´õÇߴµ¥ ¶Ç ±× ¼ö¶ó¸é 1ÀÌ 0ÀÌ µÇ¾î ¹ö¸°´Ù. 1ÀÌ 0À̶ó¸é 2 = 1 + 1 = 0ÀÌ µÇ¾î °á±¹ ¸ðµç ¼ö°¡ ´Ù 0ÀÌ´Ù. ÀÌ·± ¾û¶×ÇÑ ³í¸®ÀÇ ¿øÀÎÀº ¡Ä¸¦ ¼ö¶ó°í »ý°¢Çϴµ¥¼ ºñ·ÔµÇ´Âµ¥
¡Ä´Â ¼ö°¡ ¾Æ´Ï¶ó °è¼Ó Ä¿Áö°í ÀÖ´Â »óÅ¿©¼ ¼ö¿ÍÀÇ ¿¬»êÀÌ ±ÝÁöµÈ´Ù.
¸¶Âù°¡Áö·Î nullµµ °ªÀÌ ¾Æ´Ñ »óÅ¿©¼ null°ú nullÀÌ ´Ù¸£´Ù´Â ³í¸®°¡ ¼º¸³ÇÑ´Ù. null ¿¬»êÀÇ Æ¯¼öÇÔÀº bool? ŸÀÔ¿¡ ´ëÇÑ &, | ³í¸® ¿¬»ê¿¡µµ ³ªÅ¸³´Ù. Á¶±Ý º¹ÀâÇѵ¥ Áø¸®Ç¥¸¦ ±×·Á
º¸¸é ÇÑ ´«¿¡ Á¤¸®µÇÁö¸¸ ¼ÖÁ÷È÷ Á¶±Ý Çò°¥¸®´Â ¸éÀÌ ÀÖ´Ù.
a |
b |
a & b |
a | b |
true |
null |
null |
true |
false |
null |
false |
null |
null |
null |
null |
null |
?? ÀÌÇ× ¿¬»êÀÚ´Â a ?? b Çü½ÄÀ¸·Î
»ç¿ëÇϸç a´Â ¹Ýµå½Ã ³Î °¡´É ŸÀÔ ¶Ç´Â ÂüÁ¶ ŸÀÔÀ̾î¾ß ÇÑ´Ù. a
?? b´Â aÀÇ °ªÀ» Æò°¡ÇÏ¿© a°¡ ³ÎÀÌ ¾Æ´Ï¶ó¸é a¸¦ ¸®ÅÏÇÏ¸ç ³ÎÀ̸é b¸¦ ´ë½Å ¸®ÅÏÇÑ´Ù. Áï ÀÌ ¿¬»êÀÚ´Â ³Î °¡´É º¯¼ö¸¦ ÀÐµÇ ³ÎÀÏ °æ¿ì ¸®ÅÏÇÒ °ªÀ» ÁöÁ¤ÇÑ´Ù. ??
¿¬»ê¹®ÀÇ b´Â a°¡ ³ÎÀÏ ¶§¸¸ Æò°¡µÇ´Â ¼îÆ®
¼Å°Æ® ¹æ½ÄÀÌ Àû¿ëµÈ´Ù. Áï a°¡ ³ÎÀÌ ¾Æ´Ï¶ó¸é b´Â ¾Æ¿¹ Æò°¡µÇÁöµµ ¾Ê°í ¹«½ÃµÈ´Ù.
IfNull |
using
System; class CSTest
{ public
static void Main() { int?
Age = null; int
MyAge; MyAge
= Age ?? 25; Console.WriteLine($"³»
³ªÀÌ´Â {MyAge}»ìÀÔ´Ï´Ù."); } } |
Age°¡ null·Î ÃʱâȵǾúÀ¸¹Ç·Î Age ?? 25´Â 25·Î Æò°¡µÈ´Ù.
Age ?? 25¶ó´Â Ç¥Çö½ÄÀº Age¸¦ ÀÐµÇ ¸¸¾à Age°¡
°áÁ¤µÇÁö ¾ÊÀº »óŶó¸é 25·Î °£ÁÖÇÑ´Ù´Â ¶æÀÌ´Ù. ÀÌ Ç¥Çö½ÄÀ»
Á¶°Ç¹®À¸·Î ±æ°Ô Ç®¾î ¾µ ¼öµµ ÀÖ´Ù.
if (Age.HasValue) {
MyAge
= Age.Value;
} else {
MyAge
= 25;
}
ÄÚµåÀÇ ³»¿ëÀº °°Áö¸¸ º¸´Ù½ÃÇÇ ³Ê¹« ±æ¾î ºÒÆíÇÏ´Ù. ÀÌ Á¶°Ç¹®À» °£´ÜÇÏ°Ô
ÁÙÀÎ °ÍÀÌ ¹Ù·Î Age ?? 25ÀÌ´Ù. Age¿¡ nullÀÌ ¾Æ´Ñ ´Ù¸¥ °ªÀ» ´ëÀÔÇØ ³õ°í ½ÇÇàÇÏ¸é ´ëÀÔµÈ °ªÀÌ Ãâ·ÂµÈ´Ù.
³Î °¡´É ŸÀÔÀ» Áö¿øÇÏ´Â »õ·Î¿î ¿¬»êÀÚ°¡ 6.0¿¡¼ Ãß°¡µÇ¾ú´Ù. Ưº°ÇÑ ±â´ÉÀ» Á¦°øÇѴٱ⺸´Ù´Â ±ä ±¸¹®À» ª°Ô ÁÙ¿© ÁÖ´Â ÆíÀÇ ¹®¹ýÀÌ´Ù. °´Ã¼¿Í
Ä÷º¼Ç¿¡ ´ëÇØ µÎ °¡Áö ¿¬»êÀÚ°¡ Á¦°øµÇ´Âµ¥ µ¿ÀÛÀº ºñ½ÁÇÏ´Ù.
l °´Ã¼?.¸â¹ö : °´Ã¼°¡ nullÀÌ
¾Æ´Ò ¶§¸¸ ¸â¹ö¸¦ Àаųª È£ÃâÇÑ´Ù.
l ¹è¿?[÷ÀÚ] : ¹è¿À̳ª Ä÷º¼ÇÀÌ
null¾Æ´Ò ¶§¸¸ ÷ÀÚÀÇ ¿ä¼Ò¸¦ ¸®ÅÏÇÑ´Ù.
°´Ã¼³ª ¹è¿ÀÌ nullÀÌ¸é µÎ °æ¿ì ¸ðµÎ nullÀ» ¸®ÅÏÇÑ´Ù. ¹®ÀÚ¿ º¯¼öÀÇ ±æÀ̸¦ Ãâ·ÂÇÏ·Á¸é Length ¼Ó¼ºÀ» ÀÐÀ¸¸é µÈ´Ù.
string Name = "ÁøÀ翵";
Console.WriteLine(Name.Length);
´õ ¾øÀÌ °£´ÜÇÑ ÄÚµåÀÌÁö¸¸ NameÀÌ nullÀÎ °æ¿ì´Â °í·ÁÇÏÁö ¾Ê¾Ò´Ù. null »óÅÂÀÇ °´Ã¼¸¦ »ç¿ëÇϸé
Áï½Ã ¿¹¿Ü 󸮵ȴÙ. null±îÁö °í·ÁÇÏÀÚ¸é Á¶°Ç¹®À» ÀÛ¼ºÇØ¾ß ÇÑ´Ù.
string Name = null;
if (Name != null) {
Console.WriteLine(Name.Length);
} else {
Console.WriteLine(null);
}
NameÀÌ null ¾Æ´Ï¸é
±æÀ̸¦ Á¶»çÇÏ¿© Ãâ·ÂÇÏ°í nullÀÌ¸é ºóÁÙ¸¸ Ãâ·ÂÇÑ´Ù. ¿¹¿Ü´Â
¹ß»ýÇÏÁö ¾Ê°í Á¤»ó 󸮵ȴÙ. Á¶°Ç¹® ´ë½Å »ïÇ× Á¶°Ç ¿¬»êÀÚ¸¦ ¾µ ¼öµµ ÀÖÁö¸¸ : Á¿ìÀÇ Å¸ÀÔÀÌ ÀÏÄ¡ÇØ¾ß ÇÑ´Ù´Â Á¦¾àÀÌ ÀÖ¾î null ´ë½Å 0À» Ãâ·ÂÇØ¾ß ÇÑ´Ù.
Console.WriteLine(Name != null ? Name.Length:0);
Á¶°Ç¹®°ú Á¤È®È÷ °°Áö´Â ¾Ê¾Æ »ïÇ× Á¶°Ç ¿¬»êÀÚ´Â ¾î¿ï¸®Áö ¾Ê´Â´Ù. null ÆÇ´Ü
Á¶°ÇÀ» ´ë½ÅÇØ ÁÖ´Â ¿¬»êÀÚ°¡ ¹Ù·Î ?.ÀÌ´Ù.
nullop |
using
System; class CSTest
{ public
static void Main() { string
Name = null; Console.WriteLine(Name?.Length); } } |
NameÀÌ nullÀ̸é nullÀ» ¸®ÅÏÇÏ¿© ºóÁÙ¸¸ Ãâ·ÂÇϸç nullÀÌ ¾Æ´Ï¸é Length ¼Ó¼ºÀ» ÀÐ¾î ±æÀ̸¦ Ãâ·ÂÇÑ´Ù. ?[] ¿¬»êÀÚµµ ¹è¿, Ä÷º¼Ç¿¡ Àû¿ëÇÑ´Ù´Â °Í¸¸ ´Ù¸£°í µ¿ÀÛÀº ºñ½ÁÇÏ´Ù.
nullarray |
|
using
System; class CSTest
{ public
static void Main() { int[]
ar = { 1, 2, 3, 4, 5 }; Console.WriteLine(ar?[3]); } } |
|
½ÇÇà°á°ú |
4 |
¹è¿ÀÇ 3¹ø° ¿ä¼Ò¸¦ Àоî Ãâ·ÂÇÑ´Ù.
arÀÌ nullÀÌ¸é ¾Æ¹«°Íµµ Ãâ·ÂÇÏÁö ¾Ê´Â´Ù. if¹®À¸·Î
½á¾ßÇÒ Äڵ带 ¿¬»ê¹®À¸·Î °£ÆíÇϱâ Ç¥±âÇÒ ¼ö ÀÖ¾î ª°í Æí¸®ÇÏ´Ù.
?.°ú ?[] ¿¬»ê¹®Àº
¾Õ¿¡¼ º¸ÀÎ Á¶°Ç¹®À¸·Î ġȯµÇ¾î ÄÄÆÄÀϵȴÙ. °á±¹ if¹®À»
ª°Ô Ç¥±âÇÏ´Â ¹®¹ýÀÏ »ÓÀÌ´Ù. ¸Å¹ø ġȯµÇ±â ¶§¹®¿¡ ¾î¼´Ù ÇÑ ¹ø¾¿Àº »ó°ü¾øÁö¸¸ ¹Ýº¹ÀûÀ¸·Î »ç¿ëÇÏ´Â
°ÍÀº ¼Óµµ¿Í Å©±â¿¡ ºÒ¸®ÇÏ´Ù.
Console.WriteLine(ar?[3]); Console.WriteLine(ar?[2]); Console.WriteLine(ar?[4]); |
if (ar != null) { Console.WriteLine(ar[3]); Console.WriteLine(ar[2]); Console.WriteLine(ar[4]); } |
¿ÞÂÊ ÄÚµå´Â ¿ä¼Ò¸¦ ÀÐÀ» ¶§¸¶´Ù if¹®À¸·Î ¸Å¹ø Á¡°ËÇÏ´Â ²ÃÀ̾î¼
ºñÈ¿À²ÀûÀÌ´Ù. ÀÌ·² ¶§´Â ¿À¸¥ÂÊ ÄÚµåó·³ null ¿©ºÎ¸¦
µü ÇÑ ¹ø¸¸ Á¡°ËÇÏ°í nullÀÌ ¾Æ´Ò ¶§¸¸ [ ] ¿¬»êÀÚ·Î
¿ä¼Ò¸¦ Àд ÆòÀÌÇÑ Äڵ尡 À¯¸®ÇÏ´Ù.
ÂüÁ¶Çü º¯¼ö´Â ¾Æ¹«°Íµµ °¡¸®Å°Áö ¾Ê´Â´Ù´Â Àǹ̷Πnull°ªÀ» °¡Áú
¼ö ÀÖ´Ù. Á¤»óÀûÀÎ »óȲÀÌÁö¸¸ ¿øÄ¡ ¾Ê´Â »óȲ¿¡¼´Â null°ªÀ¸·Î
ÀÎÇØ ÇÁ·Î±×·¥ÀÌ ÀÌ»ó µ¿ÀÛÇÏ´Â °æ¿ì°¡ ºó¹øÇÏ´Ù.
string s = null;
Console.WriteLine($"³»¿ë : {s}, ±æÀÌ : {s.Length}");
¹®ÀÚ¿¿¡ ¾Æ¹«°Íµµ ÀúÀåµÇ¾î ÀÖÁö ¾ÊÀº »óÅ¿¡¼ s¸¦ Ãâ·ÂÇÏ¸é ±×³É
ºó ¹®ÀÚ¿ÀÌ¾î¼ º° ÀÌ»óÀº ¾ø´Ù. ±×·¯³ª sÀÇ ¸Þ¼µå¸¦ È£ÃâÇϸé
¿¹¿Ü¸¦ ÀÏÀ¸Å°¸ç ´Ù¿îµÇ¾î ¹ö¸°´Ù. nullÀº »óÅÂÀÌÁö À¯È¿ÇÑ ¹®ÀÚ¿ÀÌ ¾Æ´Ï¾î¼ ±æÀ̸¦ Á¶»çÇÒ ¼ö ¾ø´Ù. ¹®Á¦´Â ÀÌ·± À§ÇèÇÑ Äڵ忡 ´ëÇØ ÄÄÆÄÀÏ·¯°¡ ¾î¶°ÇÑ °æ°í³ª ¿¡·¯¸¦ Ãâ·ÂÇÏÁö ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù. ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é ÂüÁ¶Çü º¯¼ö¸¦ »ç¿ëÇÏ´Â ¸ðµç °÷¿¡ if (s !=
null) Á¶°Ç¹®À» ÀÏÀÏÀÌ ºÙ¿©¾ß Çϴµ¥ ¸Å¹ø ±×·¯±â´Â ³Ê¹« ±ÍÂú´Ù. Á¶°Ç Á¡°ËÀ» »ý·«Çϸé
¾îµð¼ ¸»½éÀ» ºÎ¸±Áö ¾Ë ¼ö ¾ø´Ù.
ÀÌ·± ÀÌÀ¯·Î C# 8.0¿¡¼ ÂüÁ¶Çü¿¡ ´ëÇؼµµ ³Î °¡´É ŸÀÔÀ» Ãß°¡Çß´Ù. ÂüÁ¶ÇüÀº ¿ø·¡ ³ÎÀ» °¡Áú ¼ö ÀÖ¾úÁö¸¸ ¸í½ÃÀûÀÎ ³Î °¡´É ŸÀÔÀ» »ç¿ëÇϸé À§ÇèÇÑ Äڵ带 ¾ÈÀüÇÏ°Ô ÇÇÇØ°¥ ¼ö ÀÖ´Ù. ÀÌ ±â´ÉÀº ÀÌÀü Äڵ忡 ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼ö ÀÖ¾î ÇÊ¿äÇÒ ¶§¸¸ #nullable
enable Áö½ÃÀÚ·Î ÄѼ »ç¿ëÇÏ¸ç ´Ù »ç¿ëÇÑ ÈÄ #nullable disable·Î ²ö´Ù. ´ÙÀ½ µÎ ¿¹Á¦´Â ¾ð¾î ¹öÀüÀ» 8.0 ÀÌ»óÀ¸·Î ¼³Á¤ÇØ¾ß ÄÄÆÄÀϵȴÙ.
nullableref |
|
using
System; #nullable
enable class CSTest
{ static
void Main() { string
s = null; Console.WriteLine($"³»¿ë : {s}, ±æÀÌ : {s.Length}"); } } |
|
½ÇÇà°á°ú |
warning
CS8600: null ¸®ÅÍ·² ¶Ç´Â °¡´ÉÇÑ null °ªÀ» nullableÀÌ ¾Æ´Ñ Çü½ÄÀ¸·Î º¯È¯ÇÏ´Â ÁßÀÔ´Ï´Ù. warning
CS8602: °¡´ÉÇÑ null ÂüÁ¶ÀÇ ¿ªÂüÁ¶ÀÔ´Ï´Ù. |
µÎ °³ÀÇ °æ°í°¡ ¹ß»ýÇϸç À§ÇèÇÏ´Ù´Â °ÍÀ» ¾Ë·Á ÁØ´Ù. #nullableÀÌ
ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é °æ°í°¡ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. null°ªÀº ³Î °¡´É ŸÀÔ¿¡ ´ëÀÔÇ϶ó´Â ¾È³»¿Í nullÀÏÁöµµ ¸ð¸£´Â °ªÀ» ÂüÁ¶Çß´Ù´Â °æ°íÀÌ´Ù. ù ¹ø° °æ°í¸¦ ÇØ°áÇÏ·Á¸é string? ŸÀÔÀ» »ç¿ëÇÑ´Ù. ÀÌ Å¸ÀÔÀ» »ç¿ëÇϸé ÂüÁ¶ÇüÀÌÁö¸¸ nullÀ» °¡Áú ¼öµµ ÀÖ´Ù´Â °ÍÀ» ºÐ¸íÈ÷ ÇÑ´Ù. µÎ ¹ø° °æ°í¸¦ ÇØ°áÇÏ·Á¸é
°´Ã¼°¡ nullÀÌ ¾Æ´Ò ¶§¸¸ ¾ÈÀüÇÏ°Ô ÂüÁ¶Çϵµ·Ï Á¶°Ç¹®¾È¿¡ ÀÛ¼ºÇÑ´Ù.
nullableref2 |
using
System; #nullable
enable class CSTest
{ static
void Main() { string?
s = null; if
(s != null) { Console.WriteLine($"³»¿ë : {s}, ±æÀÌ : {s.Length}"); } } } |
ÀÌ·¸°Ô ÇÏ¸é °æ°íµµ »ç¶óÁö°í ÇÁ·Î±×·¥µµ ¾ÈÀüÇØÁø´Ù. ÄÄÆÄÀÏ·¯´Â ³Î
°¡´É ÂüÁ¶ ŸÀÔÀÇ º¯¼ö¸¦ nullÀÏ °¡´É¼ºÀÌ ÀÖ´Â »óÅ¿¡¼ ÂüÁ¶ÇÒ ¶§ °æ°íÇÏ¿© À§ÇèÀ» ¹æÁöÇÑ´Ù. ´Ù¸¸ È®½ÇÈ÷ nullÀÌ ¾Æ´Ï¶ó´Â Á¶°Ç¹® ¾È¿¡ ÀÖÀ» ¶§´Â °æ°íÇÏÁö
¾Ê´Â´Ù. À§ÇèÇÑ Äڵ忡 ´ëÇØ °æ°í¸¦ ÇØ ÁÖ¾î ¾ÈÀü¼ºÀ» ³ôÀÌ´Â ±â¹ýÀÌ´Ù.