250x250
Rainbow🌈Coder
My dev NoteπŸ“’
Rainbow🌈Coder
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (411)
    • 곡지사항 (0)
    • Debugger (10)
      • Visual Studio Debugger (1)
      • Chrome DevTools (3)
      • Visual Studio Code Debugger (4)
      • eclipse (1)
      • intelliJ (1)
    • OOP (2)
      • OOP (2)
    • TypeScript (54)
      • νƒ€μž…μŠ€ν¬λ¦½νŠΈ TypeScript (54)
    • Javascript (87)
      • Javascript (45)
      • Node.js (19)
      • React (5)
      • FE κ°œλ°œν™˜κ²½μ„€μ • (3)
      • React와 Node 같이 λ•Œλ €μž‘κΈ° (6)
      • next.js (2)
      • pixi.js (7)
    • λ§ˆν¬μ—… (23)
      • Html & Css (23)
    • C# (80)
      • C# (12)
      • 이것이 C#이닀 (68)
    • C++ (30)
      • c++ (27)
      • win api (3)
    • Unity (18)
      • Unity(기초) (8)
      • Unity(C#쀑급) (5)
      • μœ λ‹ˆν‹° 포톀(λ„€νŠΈμ›Œν¬) (4)
      • unity c# MyCode (1)
    • Java & Spring (29)
      • Java (11)
      • μŠ€ν”„λ§ (8)
      • Java Algorithm (9)
      • Javs Data Structures (1)
    • μžλ£Œκ΅¬μ‘°μ™€ μ•Œκ³ λ¦¬μ¦˜ (15)
      • 자료ꡬ쑰 (5)
      • μ•Œκ³ λ¦¬μ¦˜ (10)
    • ν˜•μƒκ΄€λ¦¬ (15)
      • Git (11)
      • μ†ŒμŠ€νŠΈλ¦¬ (3)
    • κ·Έλž˜ν”½μŠ€ (7)
      • WebGl (7)
    • AWS (3)
      • aws (3)
    • λ¦¬λˆ…μŠ€ (5)
      • λ¦¬λˆ…μŠ€ (5)
    • μ±… 리뷰 (13)
      • ν΄λ¦°μ½”λ“œ(책리뷰) (3)
      • μœ μ§€λ³΄μˆ˜κ°€λŠ₯ν•œμ½”λ”©μ˜κΈ°μˆ C#편(책리뷰) (1)
      • λ¦¬νŒ©ν† λ§(μžλ°”μŠ€ν¬λ¦½νŠΈνŒ) (9)
    • Server (2)
      • κ²Œμž„ μ„œλ²„(λ„€νŠΈμ›Œν¬, λ©€ν‹°μ“°λ ˆλ“œ,OS) (2)
    • 섀계, 아킀텍쳐 (4)
    • 파이썬 (5)
    • λ””μžμΈνŒ¨ν„΄ (2)
    • mocha (2)
    • Jest (1)
    • Spine (1)
    • 인곡지λŠ₯ (1)
      • ν˜Όμžκ³΅λΆ€ν•˜λŠ”λ¨Έμ‹ λŸ¬λ‹+λ”₯λŸ¬λ‹ (1)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

νƒœκ·Έ

  • MySQL
  • μœ„μž„
  • γ…£γ„·
  • μ»΄ν¬μ§€μ…˜

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
Rainbow🌈Coder

My dev NoteπŸ“’

C#/이것이 C#이닀

32. νŠœν”Œ

2022. 2. 14. 14:20
728x90

νŠœν”Œλ„ μ—¬λŸ¬ ν•„λ“œλ₯Ό 담을 수 μžˆλŠ” ꡬ쑰체이닀.

ν•˜μ§€λ§Œ νŠœν”Œμ€ ν˜•μ‹ 이름이 μ—†λ‹€.

κ·Έλž˜μ„œ νŠœν”Œμ€ μ‘μš© ν”„λ‘œκ·Έλž¨ μ „μ²΄μ—μ„œ μ‚¬μš©ν•  ν˜•μ‹μ„ μ„ μ–Έν•  λ•Œκ°€ μ•„λ‹Œ,

μ¦‰μ„μ—μ„œ μ‚¬μš©ν•  볡합 데이터 ν˜•μ‹μ„ μ„ μ–Έν•  λ•Œ μ ν•©ν•˜λ‹€.

νŠœν”Œμ€ κ΅¬μ‘°μ²΄μ΄λ―€λ‘œ κ°’ ν˜•μ‹μ΄λ‹€.

κ°’ ν˜•μ‹μ€ μƒμ„±λœ 지역을 λ²—μ–΄λ‚˜λ©΄ μŠ€νƒμ—μ„œ μ†Œλ©Έλ˜κΈ° λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž¨μ— μž₯기적인 뢀담을 μ£Όμ§€ μ•ŠλŠ”λ‹€λŠ” μž₯점이 μžˆλ‹€. 

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace Tuple
{ 
    class MainApp
    {
        static void Main(string[] args)
        {
            // λͺ…λͺ…λ˜μ§€ μ•Šμ€ νŠœν”Œ
            //1. μ»΄νŒŒμΌλŸ¬κ°€ νŠœν”Œμ˜ λͺ¨μ–‘을 보고 직접 ν˜•μ‹μ„ κ²°μ •ν•˜λ„λ‘ varλ₯Ό μ΄μš©ν•˜μ—¬ μ„ μ–Έ
            //2. νŠœν”Œμ€ κ΄„ν˜Έ 사이에 두 개 μ΄μƒμ˜ ν•„λ“œλ₯Ό μ§€μ •ν•¨μœΌλ‘œμ¨ λ§Œλ“€μ–΄μ§
            var a = ("슈퍼맨", 9999);
            WriteLine($"{a.Item1}, {a.Item2}"); //슈퍼맨, 9999

            // λͺ…λͺ…λœ νŠœν”Œ
            //1. μ•„λž˜μ™€ 같이 'ν•„λ“œλͺ…: κΌ΄'둜 ν•„λ“œμ˜ 이름을 μ§€μ •ν•˜μ—¬ μ„ μ–Έν•œλ‹€.
            var b = (Name: "λ°•μƒν˜„", Age: 17);
            WriteLine($"{b.Item1}, {b.Item2}"); //λ°•μƒν˜„, 17
            WriteLine($"{b.Name}, {b.Age}"); //λ°•μƒν˜„, 17

            // λΆ„ν•΄
            // μ•„λž˜μ™€ 같이 νŠœν”Œμ„ μ •μ˜ν•  λ•Œμ™€λŠ” λ°˜λŒ€μ˜ λͺ¨μŠ΅μ„ ν•˜κ³  μžˆλ‹€.
            var (name, age) = b; // (var name, var age)=b;
            WriteLine($"{name}, {age}"); //λ°•μƒν˜„, 17

            // λΆ„ν•΄2
            // νŠœν”Œ λΆ„ν•΄λ₯Ό μ΄μš©ν•˜λ©΄ λ‹€μŒκ³Ό 같이 μ—¬λŸ¬ λ³€μˆ˜λ₯Ό λ‹¨λ²ˆμ— μƒμ„±ν•˜κ³  μ΄ˆκΈ°ν™”ν•  수 μžˆλ‹€.
            // μ¦‰μ„μ—μ„œ νŠœν”Œμ„ λ§Œλ“€μ–΄μ„œ λΆ„ν•΄ν•˜λŠ” 것!
            var (name2, age2) = ("λ°•λ¬Έμˆ˜",34);
            WriteLine($"{name2}, {age2}"); //λ°•λ¬Έμˆ˜, 34

            // λͺ…λͺ…λœ νŠœν”Œ = λͺ…λͺ…λ˜μ§€ μ•Šμ€ νŠœν”Œ
            b = a;
            WriteLine($"{b.Name}, {b.Age}"); //슈퍼맨, 9999
            
            //λΆ„ν•΄μ‹œ νŠΉμ • ν•„λ“œλŠ” λ¬΄μ‹œ
            //1. μ•„λž˜μ™€ 같이 _λ₯Ό μ΄μš©ν•˜λ©΄ λœλ‹€.
            var test = (one:"μ†Œλ‚˜κΈ°" , two:999);
            var(_, two) = test; //one ν•„λ“œλŠ” λ¬΄μ‹œ
            WriteLine($"{test.one}"); //μ†Œλ‚˜κΈ°
            WriteLine($"{test.two}"); //999
        }
    }
}

λͺ…λͺ…ν•˜μ§€ μ•Šμ€ νŠœν”Œκ³Ό λͺ…λͺ…λœ νŠœν”ŒλΌλ¦¬ ν•„λ“œμ˜ μˆ˜μ™€ ν˜•μ‹μ΄ κ°™μœΌλ©΄ 할당이 κ°€λŠ₯ν•˜λ‹€.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace Tuple
{ 
    class MainApp
    {
        static void Main(string[] args)
        {
            var unnamed = ("슈퍼맨",9999); //(string, int)
            var named = (Name: "λ°•μƒν˜„", Age: 17); //(string, int)
            named = unnamed;
            WriteLine($"{named.Name}, {named.Age}");
        }
    }
}

νŠœν”Œμ΄ λΆ„ν•΄κ°€ κ°€λŠ₯ν•œ μ΄μœ λŠ” λΆ„ν•΄μžλ₯Ό κ΅¬ν˜„ν•˜κ³  있기 λ•Œλ¬Έμ΄λ‹€.

λΆ„ν•΄μžλ₯Ό κ΅¬ν˜„ν•˜κ³  μžˆλŠ” 객체λ₯Ό λΆ„ν•΄ν•œ κ²°κ³Όλ₯Ό switch λ¬Έμ΄λ‚˜ switch μ‹μ˜ λΆ„κΈ° 쑰건에 ν™œμš©ν•  수 μžˆλ‹€.

이것을 μ–΄λ €μš΄ 말둜 μœ„μΉ˜ νŒ¨ν„΄ 맀칭이라고 ν•œλ‹€.

μ‹λ³„μžλ‚˜ 데이터 ν˜•μ‹μ΄ μ•„λ‹Œ λΆ„ν•΄λœ μš”μ†Œμ˜ μœ„μΉ˜μ— 따라 값이 μΌμΉ˜ν•˜λŠ”μ§€λ₯Ό νŒλ‹¨ν•˜λŠ” 것이닀.

var alice = (job: "학생", age: 17);
var discountRate = alice switch
	{
    	("학생", int n) when n < 18 => 0.2, //학생 & 18μ„Έ 미만
        ("학생", _)                => 0.1, //학생 & 18μ„Έ 이상
        ("일반", int n) when n < 18 => 0.1, //일반 & 18μ„Έ 미만
        ("일반", _)                 => 0.05, //일반 & 18μ„Έ 이상
        _ =>0,
    };

μœ„ μ½”λ“œμ—μ„œ allice 객체가 switch μ‹μ˜ 인수둜 μ£Όμ–΄μ‘Œκ³ ,

switch 식은 aliceλ₯Ό λΆ„ν•΄ν•΄μ„œ λΆ„κΈ°λ₯Ό μˆ˜ν–‰ν•œλ‹€.

μœ„μΉ˜ νŒ¨ν„΄ λ§€μΉ­ 덕에 if(alice.job=="학생" && alice.age<18) μ΄λž€ μ½”λ“œ λŒ€μ‹ 

κ°„κ²°ν•˜λ©΄μ„œλ„ 읽기 쒋은 μ½”λ“œλ₯Ό μž‘μ„±ν•  수 있게 λ˜μ—ˆλ‹€.

<예제>->νŒ¨ν„΄ λ§€μΉ­ λŒμ•„κ°€μ§€ μ•ŠμŒ

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace PosisionalPatern
{ 
    class MainApp
    {
        private static double GetDiscountRate(object client)
        {
            return client switch
            {
                ("학생", int n) when n < 18 => 0.2, // 학생 & 18μ„Έ 미만
                ("학생", _) => 0.1, // 학생 & 18μ„Έ 이상
                ("일반", int n) when n < 18 => 0.1, //일반 & 18μ„Έ 미만
                ("일반", _) => 0.05, //일반 & 18μ„Έ 이상
                _ => 0,
            };
        }
        static void Main(string[] args)
        {
            var alice = (job:"학생",age:17);
            var bob = (job: "학생", age: 23);
            var charlie = (job: "일반", age: 15);
            var dave = (job: "일반", age: 21);

            WriteLine($"alice : {GetDiscountRate(alice)}");
            WriteLine($"bob : {GetDiscountRate(bob)}");
            WriteLine($"charlie : {GetDiscountRate(charlie)}");
            WriteLine($"dave : {GetDiscountRate(dave)}");
        }
    }
}

μœ„μ™€ 같은 μ½”λ“œ

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace PosisionalPatern
{
    class MainApp
    {
        private static double GetDiscountRate(object client)
        {
            switch(client)
            {
                case ("학생", int n) when n < 18: 
                    return 0.2; // 학생 & 18μ„Έ 미만
                case ("학생", _): 
                    return 0.1; // 학생 & 18μ„Έ 이상
                case ("일반", int n) when n < 18: 
                    return 0.1; //일반 & 18μ„Έ 미만
                case ("일반", _):
                    return 0.05; //일반 & 18μ„Έ 이상
                default :
                    return 0;
            }
        }
        static void Main(string[] args)
        {
            var alice = (job: "학생", age: 17);
            var bob = (job: "학생", age: 23);
            var charlie = (job: "일반", age: 15);
            var dave = (job: "일반", age: 21);

            WriteLine($"alice : {GetDiscountRate(alice)}");
            WriteLine($"bob : {GetDiscountRate(bob)}");
            WriteLine($"charlie : {GetDiscountRate(charlie)}");
            WriteLine($"dave : {GetDiscountRate(dave)}");
        }
    }
}
728x90

'C# > 이것이 C#이닀' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

33. μΈν„°νŽ˜μ΄μŠ€(1)  (0) 2022.02.14
이것이 C#이닀 7μž₯ μ—°μŠ΅λ¬Έμ œ μ°Έκ³   (0) 2022.02.14
31. ꡬ쑰체, λ³€κ²½ λΆˆκ°€λŠ₯ ꡬ쑰체(readonly struct)  (0) 2022.02.14
30. ν™•μž₯ λ©”μ†Œλ“œ  (0) 2022.02.14
29. λΆ„ν•  클래슀  (0) 2022.02.11
    'C#/이것이 C#이닀' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • 33. μΈν„°νŽ˜μ΄μŠ€(1)
    • 이것이 C#이닀 7μž₯ μ—°μŠ΅λ¬Έμ œ μ°Έκ³ 
    • 31. ꡬ쑰체, λ³€κ²½ λΆˆκ°€λŠ₯ ꡬ쑰체(readonly struct)
    • 30. ν™•μž₯ λ©”μ†Œλ“œ
    Rainbow🌈Coder
    Rainbow🌈Coder
    λͺ°λΌλ„ 결ꡭ은 μ•„λŠ” 개발자, 그런 μ‚¬λžŒμ΄ 되기 μœ„ν•œ 맀일의 ν•œκ±ΈμŒ

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”