
var 변수 이름 = ( 값1, 값2...)
var 변수 이름 = ( 필드명1: 값1, 필드명2: 값2 ...)
var 변수 이름 = ( 필드명1: 값1, 필드명2: 값2 ...)
( 필드명1, 필드명2 ...) = 변수 이름
( 필드명1, _ ...) = 변수 이름
( 필드명1, 필드명2 ...) = (값1, 값2 ...)
using System;
namespace Tuple
{
class MainApp
{
static void Main(string[] args)
{
var a = ("Fruit", 31); // 명명되지 않은 튜플
Console.WriteLine($"{a.Item1}, {a.Item2}");
var b = (Name: "Jack", Age: 18); // 명명된 튜플
Console.WriteLine($"{b.Name}, {b.Age}");
var (name, age) = b; // 분해 1
Console.WriteLine($"{name}, {age}");
var (name2, age2) = ("Jill", 21); // 분해 2
Console.WriteLine($"{name2}, {age2}");
b = a; // 명명되지 않은 튜플 = 명명된 튜플
Console.WriteLine($"{b.Name}, {b.Age}");
}
}
}
[실행 결과]
Fruit, 31
Jack, 18
Jack, 18
Jill, 21
Fruit, 31
using System;
namespace PosisionalPattern
{
class MainApp
{
private static double GetDiscounRate(object client)
{
return client switch
{
("학생", int n) when n < 18 => 0.2,
("학생", _) => 0.1,
("일반", int n) when n < 18 => 0.1,
("일반", _) => 0.05,
_ => 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);
Console.WriteLine($"alice: {GetDiscounRate(alice)}");
Console.WriteLine($"bob: {GetDiscounRate(bob)}");
Console.WriteLine($"charlie: {GetDiscounRate(charlie)}");
Console.WriteLine($"dave: {GetDiscounRate(dave)}");
}
}
}
[실행 결과]
alice: 0.2
bob: 0.1
charlie: 0.1
dave: 0.05
▪ 참고: Hello Fruit! - switch