ÆÐÅÏ ¸ÅĪÀº °´Ã¼ÀÇ Å¸ÀÔÀ̳ª °ª, Á¶°ÇÀ» °£·«ÇÑ ÇüÅ·ΠÁ¡°ËÇϴ ǥÇö½ÄÀÌ´Ù. ŸÀÔ ÆÐÅÏ, »ó¼ö ÆÐÅÏ, var ÆÐÅÏ
¼¼ °¡Áö¸¦ Áö¿øÇÏ¸ç ¾ÕÀ¸·Î °è¼Ó ´Ã¾î³¯ ¿¹Á¤ÀÌ´Ù. c# 7.1¿¡¼´Â Á¦³×¸¯Àº Àμö·Î ¹ÞÀº T ŸÀÔ¿¡µµ ÆÐÅÏ ¸ÅĪÀÌ Àû¿ëµÈ´Ù. ŸÀÔ ÆÐÅÏÀº "°´Ã¼ is ŸÀÔ º¯¼ö"
Çü½ÄÀ¸·Î »ç¿ëÇϸç ŸÀÔÀÌ ¸ÂÀ¸¸é ij½ºÆñîÁö °°ÀÌ ¼öÇàÇÑ´Ù. »ó¼ö ÆÐÅÏÀº is ¿¬»êÀÚÀÇ ¿ìº¯¿¡ »ó¼ö¸¦ ¾²´Â Çü½ÄÀÌ´Ù. ÀÌ µÎ Çü½ÄÀº is ¿¬»êÀÚ¿Í ÇÔ²² ÀÌ¹Ì ¼Ò°³Çß´Ù.
switch¹®ÀÇ case¿¡µµ
ÆÐÅÏ ¸ÅĪ¹®À» »ç¿ëÇÒ ¼ö ÀÖ¾î ±â´ÉÀÌ ´ëÆø È®ÀåµÇ¾ú´Ù. switch¹®ÀÇ Á¦¾î º¯¼ö´Â ¿ø·¡ Á¤¼ö, ¹®ÀÚ¿ Á¤µµ¸¸ °¡´ÉÇßÁö¸¸ Áö±ÝÀº ÀÓÀÇÀÇ °´Ã¼µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. »Ó¸¸
¾Æ´Ï¶ó when ¹®À¸·Î ´õ »ó¼¼ÇÑ Á¶°Çµµ °Ë»çÇÒ ¼ö ÀÖ´Ù.
SwitchPattern |
½ÇÇà°á°ú |
using
System; using
System.Collections; class CSTest
{ static
void OutScore(object score) { switch
(score) { case
null: Console.WriteLine("¼ºÀû
Á¤º¸ ¾øÀ½"); break; case
100: Console.WriteLine("¸¸Á¡"); break; case
int value when value < 0 || value > 100: Console.WriteLine("¹«È¿ÇÑ
¼ºÀû"); break; case
int value: Console.WriteLine(value); break; case
string why: Console.WriteLine(why); break; case
DateTime tran: Console.WriteLine(tran
+ "¿¡ ÀüÇа¨"); break; case
ArrayList list: foreach
(int a in list) { Console.Write(a
+ ", "); } Console.WriteLine(); break; } } static
void Main() { OutScore(88); OutScore(null); OutScore("°á¼®"); OutScore(new
DateTime(2020, 4, 15)); OutScore(100); ArrayList
ar = new ArrayList(); ar.Add(70); ar.Add(80); ar.Add(90); OutScore(ar); } } |
88 ¼ºÀû Á¤º¸ ¾øÀ½ °á¼® 2020-04-15 ¿ÀÀü 12:00:00¿¡ ÀüÇа¨ ¸¸Á¡ 70, 80, 90, |
Á¡¼ö´Â º¸Åë 0 ~ 100 »çÀÌÀÇ Á¤¼öÀÌÁö¸¸ ´õ ´Ù¾çÇÑ ÇüÅ·Π³ªÅ¸³¯
¼ö ÀÖ´Ù. Á¤º¸°¡ ¾ø°Å³ª ÀüÇа£ °æ¿ì, °á¼®Ç߰ųª ÄÁ´×ÇÏ´Ù
°É¸° °æ¿ìµµ ÀÖÀ¸¸ç Ç¥ÇöÇÏ°íÀÚ ÇÏ´Â »óÅ¿¡ µû¶ó ŸÀÔÀÌ ´Ù¾çÇÏ´Ù. ±×·¡¼ Á¡¼ö¸¦ Ãâ·ÂÇÏ´Â OutScore ¸Þ¼µå´Â object ŸÀÔÀ» Àμö·Î ¹Þ´Â´Ù. ÀÏ´Ü object·Î ¹ÞÀº ÈÄ °´Ã¼ÀÇ Å¸ÀÔ°ú °ª, Á¶°ÇÀ» Á¡°ËÇÏ¿© ´Ù¾çÇÑ ÇüÅÂÀÇ Á¤¼ö¸¦ Ãâ·ÂÇϴµ¥ À̶§ switchÀÇ
ÆÐÅÏ ¸ÅĪ ±¸¹®À» »ç¿ëÇÑ´Ù.
null »ó¼ö¿Í ºñ±³ÇÏ¿© Á¤º¸°¡ ¾ø´Â °æ¿ì¸¦ ´Ù·ê ¼ö ÀÖ°í »ó¼ö 100°ú ºñ±³ÇÏ¿© ¸¸Á¡Àº Ưº°³ª°Ô Ãë±ÞÇÏ¿´´Ù. Á¤¼öÇüÀÎ °æ¿ì´Â ÆòÀÌÇÑ
Á¡¼ö°ªÀ̹ǷΠint ŸÀÔÀÇ value·Î ¹Þ¾Æ Á¡¼ö¸¦ Ãâ·ÂÇÑ´Ù. µÚ¿¡ when ¹®À» Ãß°¡ÇÏ¿© Á¶°ÇÀ» ÁöÁ¤Çϸé À½¼öÀ̰ųª 100 ÃÊ°úÀÏ ¶§ ¹«È¿ÇÑ °ªÀ¸·Î ÆÇÁ¤ÇÑ´Ù. À̶§ ÆòÀÌÇÑ int ŸÀÔ°ú ¹üÀ§¸¦ Á¡°ËÇÏ´Â when¹®ÀÇ ¼ø¼¿¡ À¯ÀÇÇØ¾ß ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ ÇÏ¸é ¿¡·¯ÀÌ´Ù.
case int value:
case int value when value < 0 || value >
100:
int ŸÀÔ ÆÐÅÏÀ» ¸ÕÀú ¸¸Á·ÇØ ¹ö¸®¸é Á¤¼öÀÇ ¹üÀ§¸¦ Á¡°ËÇÏ´Â case¹®Àº ÀÖÀ¸³ª ¸¶³ªÀÌ´Ù. switch¹®ÀÇ case´Â ¿ø·¡ ¼ø¼¿¡ Àǹ̰¡ ¾øÁö¸¸ ÆÐÅÏ ¸ÅĪÀÌ µé¾î°¨À¸·Î½á Áö±ÝÀº ¼ø¼µµ Áß¿äÇØÁ³´Ù. Ư¼öÇÑ Á¶°Ç¿¡ ´ëÇÑ case¹®ÀÌ ¾ÕÂÊ¿¡ ¿Í¾ß ÇÑ´Ù.
¹®ÀÚ¿ ŸÀÔÀÌ¸é °á¼®, ºÎÁ¤ ÇàÀ§ µî ¼ºÀûÀÌ ¾ø´Â ÀÌÀ¯¸¦ ³ªÅ¸³»¸ç
³¯Â¥ ŸÀÔÀÌ¸é ¾ðÁ¦ ÀüÇа¬´ÂÁö¸¦ Ç¥ÇöÇÑ´Ù. ArrayList ŸÀÔÀÌ¸é ¼¼ºÎ °ú¸ñ ¼ºÀûÀ» Ãâ·ÂÇÑ´Ù. ÀÌóÀ½ °¢ ŸÀÔ¿¡ ´ëÇØ ¶Ç ƯÁ¤ ŸÀÔÀº Á¶°Ç¿¡ µû¶ó ¿©·¯ °¡Áö º¹ÀâÇÑ »óȲÀ» ÇϳªÀÇ switch¹®À¸·Î ´Ù·ê ¼ö ÀÖ¾î ÅëÇÕ¼ºÀÌ ³ô´Ù.
var ÆÐÅÏÀº º¯¼ö¸¦ ÀÓÀÇÀÇ Å¸ÀÔÀÎ
var º¯¼ö·Î ¹ÞÀº ÈÄ Á¶°ÇÀ» Á¡°ËÇÑ´Ù. Á¶°Ç Á¡°ËÀ» ÇÏÁö ¾Ê´õ¶óµµ ÀÏ´Ü º¯¼ö·Î ¹Þ¾Æ¾ß
ÇÑ´Ù. °£´ÜÇÑ ¿¹ºÎÅÍ º¸ÀÚ.
object obj = "korea";
if (obj is var str) {
Console.WriteLine(str);
}
ÀÓÀÇÀÇ º¯¼ö obj´Â ÀÓÀÇÀÇ Å¸ÀÔÀÎ
var¿Í Ç×»ó ŸÀÔÀÌ ÀÏÄ¡ÇϹǷΠis ¿¬»ê½ÄÀº ¾ðÁ¦³ª ÂüÀ̸ç obj¸¦ str¿¡ ´ëÀÔÇÏ´Â °Í°ú °°´Ù. var¿Í ŸÀÔÀ» ºñ±³Çϸé Ç×»ó ÂüÀ̸ç obj¸¦ str¿¡ ´ëÀÔÇÏ´Â °Í°ú °°¾Æ is ¿¬»êÀÚ¿¡¼´Â ½Ç¿ë¼ºÀÌ ¾ø°í ÁÖ·Î switch¹®¿¡¼ Á¶°Ç¹®°ú ÇÔ²² »ç¿ëÇÑ´Ù.
VarPattern |
|
using
System; using
System.Collections; class CSTest
{ static
void Main() { string
file = "girl.jpg"; switch
(file) { case
var ext when ext.Contains(".jpg"): Console.WriteLine("JPEG
ÆÄÀÏ"); break; case
var ext when ext.Contains(".png"): Console.WriteLine("PNG
ÆÄÀÏ"); break; case
null: Console.WriteLine("¹«È¿ÇÑ
ÆÄÀÏÀÔ´Ï´Ù."); break; } } } |
|
½ÇÇà°á°ú |
JPEG ÆÄÀÏ |
¹®ÀÚ¿ ÇüÅÂÀÇ file º¯¼ö¸¦ ÀÓÀÇ Å¸ÀÔÀÎ ext·Î ¹Þ¾Æ ext¿¡ ´ëÇØ
when¹®À¸·Î Á¶°ÇÀ» Á¡°ËÇÑ´Ù. Á¶°Ç¿¡ ¸Â´Â case¸¦
ã¾Æ ½ÇÇàÇϴµ¥ ÆÄÀϸíÀÇ È®ÀåÀÚ¸¦ ÃßÃâÇÏ¿© ¾î¶² Á¾·ùÀÇ ÆÄÀÏÀÎÁö Á¶»çÇß´Ù. if¹®À¸·Î ¼öÇàÇØ¾ß ÇÒ Á¡°ËÀ» switch¹®À¸·Î ¼öÇàÇÒ ¼ö ÀÖ°í nullÀÎ °æ¿ì±îÁö ÅëÇÕ Á¡°ËÇÒ
¼ö ÀÖ´Â ÀÌÁ¡ÀÌ ÀÖ´Ù.
ÆÐÅÏ ¸ÅĪ Äڵ带 ÆòÀÌÇÑ ¹®¹ýÀ¸·Î ÀÛ¼ºÇÏ´Â °Íµµ °¡´ÉÇÏÁö¸¸ ¾ÐÃàÀûÀÎ Äڵ带 Ç®¾î ¾²¸é ¾çÀÌ ¸¹¾ÆÁø´Ù. ±×·¡¼ ÄÄÆÄÀÏ·¯°¡ ÆÐÅÏ ¸ÅĪ ±¸¹®À» ÆòÀÌÇÏ°Ô Ç®¾î¼ ´ë½Å ½á ÁØ´Ù. ±×·¯´Ù
º¸´Ï È¿À²ÀÌ º°·Î ÁÁÁö´Â ¾Ê´Ù. Àͼ÷ÇØÁö¸é ª°í °£°áÇÏ°Ô ¾²°ÚÁö¸¸ °¡µ¶¼ºÀÌ ¶³¾îÁö°í ³À̵µ°¡ ³ôÀº ÆíÀÌ´Ù.