5-2-4.Á¶°Ç ¿¬»êÀÚ

»ïÇ× Á¶°Ç ¿¬»êÀڴ ƯÀÌÇÏ°Ôµµ ÇÇ¿¬»êÀÚ°¡ ¼¼ °³³ª µÈ´Ù. ?¿Í :ÀÌ Â¦À» ÀÌ·ç¾î Á¶°Ç¿¡ µû¶ó µÎ °ª Áß Çϳª¸¦ ¼±ÅÃÇÑ´Ù. ±âº» Çü½ÄÀº ´ÙÀ½°ú °°´Ù. Á¶°Ç¹®¿¡ ¹Ýµå½Ã bool ŸÀÔÀÌ ¿Í¾ß ÇÑ´Ù.

 

(Á¶°Ç) ? °ª1:°ª2

 

Á¶°ÇÀÌ ÂüÀ̸é Àüü ¿¬»ê¹®Àº °ª1À» ¸®ÅÏÇÏ¸ç °ÅÁþÀÌ¸é °ª2·Î Æò°¡ÇÑ´Ù. Àüü½ÄÀÇ Å¸ÀÔÀÌ ÀÏÁ¤ÇØ¾ß ÇϹǷΠ°ª1°ú °ª2´Â µ¿ÀÏÇÑ Å¸ÀÔÀ̾î¾ß ÇÑ´Ù.

 

Console.WriteLine(bMale ? "³²ÀÚ":"¿©ÀÚ");

 

ÀÌ ¹®ÀåÀº bMale º¯¼öÀÇ °ª¿¡ µû¶ó "³²ÀÚ" ¶Ç´Â "¿©ÀÚ"¸¦ Ãâ·ÂÇÑ´Ù. µÑ Áß Çϳª¸¦ ¼±ÅÃÇÏ´Â ¹®Á¦¿©¼­ if else ±¸¹®À¸·Î ´ëüÇÒ ¼ö ÀÖÁö¸¸ Äڵ尡 ´õ ±æ¾îÁø´Ù.

 

if (bMale) {

     Console.WriteLine("³²ÀÚ");

} else {

     Console.WriteLine("¿©ÀÚ");

}

 

if else´Â ¹®ÀåÀ̾ ÀÓÀÇÀÇ ¸í·ÉÀ» ¼öÇàÇÒ ¼ö ÀÖ´Â ¹ü¿ë¼ºÀº ÀÖÁö¸¸ ½Ä ³»ºÎ¿¡ ¾µ ¼ö´Â ¾ø´Ù. ¹Ý¸é Á¶°Ç ¿¬»êÀڴ ǥÇö½ÄÀ̾ ´Ù¸¥ ¹®Àå ³»ºÎ¿¡ ÀÛ¼ºÇÒ ¼ö ÀÖ¾î °£ÆíÇÏ´Ù. µÑ Áß Çϳª¸¦ ¼±ÅÃÇÒ ¶§´Â Á¶°Ç ¿¬»êÀÚ°¡ Á¦°ÝÀÌÁö¸¸ ¼Â ÀÌ»óÀÏ ¶§´Â if else ±¸¹®ÀÌ ´õ ½±´Ù.

 

condop

½ÇÇà°á°ú

using System;

 

class CSTest {

     static void Main() {

          int rank = 2;

          string medal;

          if (rank == 1) {

              medal = "±Ý¸Þ´Þ";

          } else if (rank == 2) {

              medal = "Àº¸Þ´Þ";

          } else {

              medal = "µ¿¸Þ´Þ";

          }

          Console.WriteLine(medal);

     }

}

Àº¸Þ´Þ

 

ÀÌ ¿¹Á¦´Â rank ¼øÀ§¿¡ µû¶ó ¸Þ´Þ ¹®ÀÚ¿­À» °áÁ¤ÇÑ´Ù. Á¶°Ç ¿¬»êÀÚ¸¦ ÁßøÇؼ­ »ç¿ëÇϸé ÀÌ ¼±Åõµ °¡´ÉÇϸç Ç¥Çö½ÄÀ̱⠶§¹®¿¡ WriteLineÀÇ Àμö¿­¿¡ ³ÖÀ» ¼öµµ ÀÖ´Ù.

 

string medal = rank == 1 ? "±Ý¸Þ´Þ" : (rank == 2 ? "Àº¸Þ´Þ":"µ¿¸Þ´Þ");

Console.WriteLine(rank == 1 ? "±Ý¸Þ´Þ" : (rank == 2 ? "Àº¸Þ´Þ" : "µ¿¸Þ´Þ"));

 

°¡´ÉÀº ÇÏÁö¸¸ ÁßøµÈ ±¸¹®ÀÇ °¡µ¶¼ºÀÌ ¶³¾îÁö°í Äڵ带 È®ÀåÇϱ⵵ ¾î·Æ´Ù. ¸¸¾à 4µî ÀÌÇÏ´Â Âü°¡»óÀ» ÁÖ±â·Î ÇÑ´Ù¸é ´Ù½Ã ÇÑ ¹ø ´õ ÁßøÇØ¾ß Çϸç ÄÚµå´Â ´õ Àб⠾î·Á¿öÁø´Ù. C#Àº ÀÌ·± ´ÙÁß ¼±ÅÃÀ» À§ÇØ switch Ç¥Çö½ÄÀ» µµÀÔÇß´Ù.

 

º¯¼ö switch {

      °ª1 => °á°ú1,

      °ª2 => °á°ú2,

      ...

      _ => ±×¿ÜÀÇ °æ¿ì

}

 

°úµµÇÑ Å°¿öµå³ª ºí·Ï¾øÀÌ ²À ÇÊ¿äÇÑ ³»¿ë¸¸À¸·Î Á÷°üÀûÀÎ ¼±ÅÃÀÌ °¡´ÉÇÏ´Ù. ÀÌ ±¸¹®À¸·Î Âü°¡»ó±îÁö Æ÷ÇÔÇÑ ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ. ÃÖ±Ù¿¡ Ãß°¡µÈ ¹®¹ýÀÌ¶ó ¿¹Àü ÄÄÆÄÀÏ·¯¿¡¼­ ¿¡·¯°¡ ¹ß»ýÇÒ ¼öµµ ÀÖ´Ù. ¼³Á¤ÀÇ ºôµå/°í±Þ ÆäÀÌÁö¿¡¼­ ¾ð¾î ¹öÀüÀ» C# 8.0ÀÌ»óÀ¸·Î Á¶Á¤ÇØ¾ß ÇÑ´Ù.

 

switchexp

½ÇÇà°á°ú

using System;

 

class CSTest {

     static void Main() {

          int rank = 2;

          string medal = rank switch

          {

              1 => "±Ý¸Þ´Þ",

              2 => "Àº¸Þ´Þ",

              3 => "µ¿¸Þ´Þ",

              _ => "Âü°¡»ó"

          };

          Console.WriteLine(medal);

     }

}

Àº¸Þ´Þ

 

rank °ª¿¡ µû¶ó ´ëÀÀµÇ´Â ¸Þ´ÞÀ» ¹Ù·Î ¾Ë¾Æº¼ ¼ö ÀÖ°í Äڵ带 È®ÀåÇϱ⵵ Æí¸®ÇÏ´Ù. °Ô´Ù°¡ if else¿Í´Â ´Þ¸® ¹®ÀåÀÌ ¾Æ´Ñ ½ÄÀ̾ medal Áß°£ º¯¼ö ¾øÀÌ WriteLineÀÇ Àμö¿­¿¡ ¹Ù·Î ÀûÀ» ¼ö ÀÖ´Ù.

 

Console.WriteLine(rank switch { 1 => "±Ý¸Þ´Þ", 2 => "Àº¸Þ´Þ", 3 => "µ¿¸Þ´Þ", _ => "Âü°¡»ó" });

 

Á¶°Ç ¿¬»êÀÚ´Â ³í¸®Çü¿¡ ´ëÇØ µÑ Áß Çϳª¸¦ °í¸£´Âµ¥ ºñÇØ switch Ç¥Çö½ÄÀº ÀÓÀÇ Å¸ÀÔ¿¡ ´ëÇØ ¿©·¯ °³ Áß Çϳª¸¦ °í¸¥´Ù. bMale switch { true => "³²ÀÚ", false => "¿©ÀÚ" } ½ÄÀ¸·Î Ç¥ÇöÇÒ ¼öµµ ÀÖ¾î switch Ç¥Çö½ÄÀÌ Á¶°Ç ¿¬»êÀÚ¸¦ Æ÷°ýÇÑ´Ù.

Á¶°Ç ¿¬»êÀÚ´Â ¿ø·¡ °ªÀ» ¸®ÅÏÇÏÁö¸¸ 7.2 ¹öÀüºÎÅÍ´Â ref Å°¿öµå¸¦ »ç¿ëÇÏ¿© ÂüÁ¶¸¦ ¸®ÅÏÇÒ ¼öµµ ÀÖ´Ù. Á¶°Ç¿¡ µû¶ó º¯¼ö³ª ¹è¿­ÀÇ ¿ä¼Ò¸¦ ¼±ÅÃÇÒ ¼ö ÀÖÀ¸¸ç ÂüÁ¶´Â Áº¯°ªÀ̾ º¯°æÇÒ ¼öµµ ÀÖ´Ù.

 

switchref

½ÇÇà°á°ú

using System;

 

class CSTest {

     public static void Main() {

          int a = 1;

          int b = 2;

 

          Console.WriteLine($"a = {a}, b = {b}");

          ref int r = ref (a > b ? ref a : ref b);

          r = 1234;

          Console.WriteLine($"a = {a}, b = {b}");

     }

}

a = 1, b = 2

a = 1, b = 1234

 

µÑ Áß Å« Á¤¼ö¸¦ ã¾Æ Á¤¼öÇü ÂüÁ¶ r¿¡ ´ëÀÔÇÑ´Ù. rÀº ´õ Å« ¼öÀÇ º°¸íÀ̾ r¿¡ °ªÀ» ´ëÀÔÇϸé Á¶°Ç ¿¬»êÀÚ°¡ ãÀº º¯¼öÀÇ °ªÀÌ ¹Ù²ï´Ù.