12-4.ÆÐÅÏ ¸ÅĪ

12-4-1.switch¹®ÀÇ ÆÐÅÏ ¸ÅĪ

ÆÐÅÏ ¸ÅĪÀº °´Ã¼ÀÇ Å¸ÀÔÀ̳ª °ª, Á¶°ÇÀ» °£·«ÇÑ ÇüÅ·ΠÁ¡°ËÇϴ ǥÇö½ÄÀÌ´Ù. ŸÀÔ ÆÐÅÏ, »ó¼ö ÆÐÅÏ, 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¹®À¸·Î ´Ù·ê ¼ö ÀÖ¾î ÅëÇÕ¼ºÀÌ ³ô´Ù.

12-4-2.var ÆÐÅÏ

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ÀÎ °æ¿ì±îÁö ÅëÇÕ Á¡°ËÇÒ ¼ö ÀÖ´Â ÀÌÁ¡ÀÌ ÀÖ´Ù.

ÆÐÅÏ ¸ÅĪ Äڵ带 ÆòÀÌÇÑ ¹®¹ýÀ¸·Î ÀÛ¼ºÇÏ´Â °Íµµ °¡´ÉÇÏÁö¸¸ ¾ÐÃàÀûÀÎ Äڵ带 Ç®¾î ¾²¸é ¾çÀÌ ¸¹¾ÆÁø´Ù. ±×·¡¼­ ÄÄÆÄÀÏ·¯°¡ ÆÐÅÏ ¸ÅĪ ±¸¹®À» ÆòÀÌÇÏ°Ô Ç®¾î¼­ ´ë½Å ½á ÁØ´Ù. ±×·¯´Ù º¸´Ï È¿À²ÀÌ º°·Î ÁÁÁö´Â ¾Ê´Ù. Àͼ÷ÇØÁö¸é ª°í °£°áÇÏ°Ô ¾²°ÚÁö¸¸ °¡µ¶¼ºÀÌ ¶³¾îÁö°í ³­À̵µ°¡ ³ôÀº ÆíÀÌ´Ù.