문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

Tuple<T1, T2> 클래스

2개의 요소로 구성된 튜플 또는 쌍을 나타냅니다.

System.Object
  System.Tuple<T1, T2>

네임스페이스:  System
어셈블리:  mscorlib(mscorlib.dll)

public class Tuple<T1, T2> : IStructuralEquatable, IStructuralComparable, 
	IComparable

형식 매개 변수

T1

튜플의 첫 번째 구성 요소 형식입니다.

T2

튜플의 두 번째 구성 요소 형식입니다.

Tuple<T1, T2> 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드Tuple<T1, T2> Tuple<T1, T2> 클래스의 새 인스턴스를 초기화합니다.
위쪽

  이름설명
Public 속성Item1현재 Tuple<T1, T2> 개체의 첫 번째 구성 요소 값을 가져옵니다.
Public 속성Item2현재 Tuple<T1, T2> 개체의 두 번째 구성 요소 값을 가져옵니다.
위쪽

  이름설명
Public 메서드Equals현재 Tuple<T1, T2> 개체가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다. (Object.Equals(Object)을(를) 재정의함)
Protected 메서드Finalize가비지 수집에서 Object를 회수하기 전에 개체가 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드GetHashCode현재 Tuple<T1, T2> 개체에 대한 해시 코드를 반환합니다. (Object.GetHashCode()을(를) 재정의함)
Public 메서드GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Protected 메서드MemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드ToStringTuple<T1, T2> 인스턴스의 값을 나타내는 문자열을 반환합니다. (Object.ToString()을(를) 재정의함)
위쪽

  이름설명
명시적 인터페이스 구현Private 메서드IComparable.CompareTo현재 Tuple<T1, T2> 개체와 지정된 개체를 비교하고 정렬 순서에서 현재 개체의 위치가 지정된 개체보다 앞인지, 뒤인지 또는 동일한지를 나타내는 정수를 반환합니다.
명시적 인터페이스 구현Private 메서드IStructuralComparable.CompareTo지정된 비교자를 사용하여 현재 Tuple<T1, T2> 개체와 지정된 개체를 비교하고 정렬 순서에서 현재 개체의 위치가 지정된 개체보다 앞인지, 뒤인지 또는 동일한지를 나타내는 정수를 반환합니다.
명시적 인터페이스 구현Private 메서드IStructuralEquatable.Equals지정된 비교 메서드를 기반으로 현재 Tuple<T1, T2> 개체가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.
명시적 인터페이스 구현Private 메서드IStructuralEquatable.GetHashCode지정된 계산 메서드를 사용하여 현재 Tuple<T1, T2> 개체에 대한 해시 코드를 계산합니다.
위쪽

튜플은 특정 개수의 값 시퀀스를 갖는 데이터 구조입니다. Tuple<T1, T2> 클래스는 2-튜플 또는 두 구성 요소를 갖는 튜플이 있는 쌍을 나타냅니다. 2-튜플은 KeyValuePair<TKey, TValue> 구조와 비슷합니다.

Tuple<T1, T2> 생성자 또는 정적 Tuple.Create<T1, T2>(T1, T2) 메서드를 호출하여 Tuple<T1, T2> 개체를 인스턴스화할 수 있습니다. 읽기 전용 Item1Item2 인스턴스 속성을 사용하여 튜플의 구성 요소의 값을 검색할 수 있습니다.

튜플은 다음과 같은 네 가지 경우에 일반적으로 사용됩니다.

  • 단일 데이터 집합을 나타냅니다. 예를 들어, 튜플은 데이터베이스 레코드를 나타내고 구성 요소는 레코드의 필드를 나타낼 수 있습니다.

  • 데이터 집합에 쉽게 액세스하고 조작합니다. 다음 예제는 학생의 이름과 해당 시험 점수가 포함된 Tuple<T1, T2> 개체의 배열을 정의합니다. 그런 다음 평균 테스트 점수를 계산하는 배열을 반복합니다.

    
    using System;
    
    public class Example
    {
       public static void Demo(System.Windows.Controls.TextBlock outputBlock)
       {
          Tuple<string, Nullable<int>>[] scores = 
                        { new Tuple<string, Nullable<int>>("Jack", 78),
                          new Tuple<string, Nullable<int>>("Abbey", 92), 
                          new Tuple<string, Nullable<int>>("Dave", 88),
                          new Tuple<string, Nullable<int>>("Sam", 91), 
                          new Tuple<string, Nullable<int>>("Ed", null),
                          new Tuple<string, Nullable<int>>("Penelope", 82),
                          new Tuple<string, Nullable<int>>("Linda", 99),
                          new Tuple<string, Nullable<int>>("Judith", 84) };
          int number;
          double mean = ComputeMean(scores, out number);
          outputBlock.Text += String.Format("Average test score: {0:N2} (n={1})", mean, number) + "\n";
       }
    
       private static double ComputeMean(Tuple<string, Nullable<int>>[] scores, out int n)
       {
          n = 0;
          int sum = 0;
          foreach (var score in scores)
          {
             if (score.Item2.HasValue)
             {
                n += 1;
                sum += score.Item2.Value;
             }
          }
          if (n > 0)
             return sum / (double)n;
          else
             return 0;
       }
    }
    // The example displays the following output:
    //       Average test score: 88 (n=7)
    
    
    
  • out 매개 변수(C#) 또는 ByRef 매개 변수(Visual Basic)를 사용하지 않고 메서드에서 여러 값을 반환합니다. 예를 들어, 다음 예제는 Tuple<T1, T2> 개체를 사용하여 정수로 나눈 결과의 몫과 나머지를 반환합니다.

    
    using System;
    
    public class Example
    {
       public static void Demo(System.Windows.Controls.TextBlock outputBlock)
       {
          int dividend, divisor;
          Tuple<int, int> result;
    
          dividend = 136945; divisor = 178;
          result = IntegerDivide(dividend, divisor);
          if (result != null)
             outputBlock.Text += String.Format(@"{0} \ {1} = {2}, remainder {3}",
                               dividend, divisor, result.Item1, result.Item2) + "\n";
          else
             outputBlock.Text += String.Format(@"{0} \ {1} = <Error>", dividend, divisor) + "\n";
    
          dividend = Int32.MaxValue; divisor = -2073;
          result = IntegerDivide(dividend, divisor);
          if (result != null)
             outputBlock.Text += String.Format(@"{0} \ {1} = {2}, remainder {3}",
                               dividend, divisor, result.Item1, result.Item2) + "\n";
          else
             outputBlock.Text += String.Format(@"{0} \ {1} = <Error>", dividend, divisor) + "\n";
       }
    
       private static Tuple<int, int> IntegerDivide(int dividend, int divisor)
       {
          try
          {
             int quotient = dividend / divisor;
             int remainder = dividend % divisor;
    
             return new Tuple<int, int>(quotient, remainder);
          }
          catch (DivideByZeroException)
          {
             return null;
          }
       }
    }
    // The example displays the following output:
    //       136945 \ 178 = 769, remainder 63
    //       2147483647 \ -2073 = -1035930, remainder 757
    
    
    
  • 단일 매개 변수를 통해 메서드에 여러 값을 전달합니다. 예를 들어, Thread.Start(Object) 메서드에는 시작할 때 스레드가 실행하는 메서드에 하나의 값을 제공할 수 있는 단일 매개 변수가 있습니다. 메서드 인수로 Tuple<T1, T2> 개체를 제공하는 경우 스레드의 시작 루틴에 2개 데이터 항목을 제공할 수 있습니다.

Silverlight

5, 4에서 지원

Silverlight에서 지원되는 운영 체제 및 브라우저에 대한 자세한 내용은 지원되는 운영 체제 및 브라우저을 참조하십시오.

이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

커뮤니티 추가 항목

추가
표시: