C#

C# - Tuple(튜플) vs Struct(구조체)

Dev_Jen 2025. 7. 8. 14:32
반응형

✅ 튜플이란?

  • 서로 다른 타입의 데이터를 한 번에 묶어서 저장할 수 있는 구조
  • 배열이나 리스트처럼 하나의 타입만 저장하는 게 아니라,
    여러 값을 하나의 단위로 다룰 수 있어

🔸 기본 예제

var person = ("Alice", 25);
Console.WriteLine(person.Item1); // "Alice"
Console.WriteLine(person.Item2); // 25

여기서 나오는 Item1,2,3도 궁금해서 찾아봤다.

✅ 기본 튜플 (이름 없이 생성)

var tuple = ("Apple", 123, true);

Console.WriteLine(tuple.Item1); // "Apple"
Console.WriteLine(tuple.Item2); // 123
Console.WriteLine(tuple.Item3); // true
  • Item1, Item2, Item3는 자동으로 붙는 이름이야
  • 이름을 따로 정하지 않았기 때문에 이런 식으로 접근해야 해

✅ 이름 있는 튜플 (직접 이름 붙이기)

(string name, int price, bool inStock) product = ("Apple", 123, true);

Console.WriteLine(product.name);     // "Apple"
Console.WriteLine(product.price);    // 123
Console.WriteLine(product.inStock); // true
  • 이렇게 하면 코드 가독성이 훨씬 좋아짐
  • 실무에서는 웬만하면 이름 붙여서 쓰는 게 기본

이런식으로 Item1,2,3은 자동으로 붙는 이름이라고 한다!

하지만 기본적인 자동으로 붙는 이름이지 우리가 정의해서 사용할수도 있다! 오...

약간 뭔가 구조체같은 느낌이다. 그래서 또 찾아봤다!

🎯 팁: 이름 붙인 튜플 vs 구조체


항목 튜플 구조체
용도 가벼운 값 묶음 더 복잡한 상태와 기능 표현
접근 (x, y) 또는 .Item1 .x, .y 필드
추천 상황 일시적 데이터 반환, 빠른 좌표 등 게임 캐릭터 정보, 상태 등

이런식이라고 한다! 음 확실히 구조체와 튜플도 명확한 차이가 있는 듯 하다.


🔸 이름 붙여서 쓰기

(string name, int age) person = ("Alice", 25);
Console.WriteLine(person.name); // Alice
Console.WriteLine(person.age);  // 25

🔸 튜플을 함수에서 반환하기

static (int sum, int count) Calculate(int[] numbers)
{
    int sum = numbers.Sum();
    int count = numbers.Length;
    return (sum, count);
}

// 사용
var result = Calculate(new int[] { 1, 2, 3 });
Console.WriteLine($"합계: {result.sum}, 개수: {result.count}");

🧠 튜플은 언제 쓰면 좋을까?

상황 이유
함수에서 여러 값을 한 번에 반환하고 싶을 때 return (x, y);
좌표처럼 값들이 묶여 있는 개념을 표현할 때 (int x, int y)
임시로 두 값을 전달하거나 비교하고 싶을 때 빠르게 사용 가능
 

🎯 요약

개념 설명
튜플 (A, B) 서로 다른 타입 여러 개를 한 덩어리로 묶음
접근 방식 .Item1, .Item2 또는 이름 지정: (int x, int y)
주 용도 간단한 데이터 묶음, 함수 복수 반환값, 좌표 표현

리스트를 사용하다 튜플이 나오길래 처음에 튜플을 보고 이게뭐야? 싶었다 그래서 궁금해서 알아봤는데 정말 유용한듯하다!

반응형