C \ # 원조 Pair Triplet Tuple

12322 단어 AIR
C \ # 기본적으로 Pair, Triplet, Tuple (4.0 새로 추 가 된) 세 개의 원 조 를 제공 합 니 다. 일부 작은 데이터 구 조 를 사용 할 때 우 리 는 해당 하 는 데이터 구 조 를 설명 하지 않 고 이 원 조 를 대체 할 수 있 습 니 다.
public sealed class Pair
{
    // Fields
    public object First;
    public object Second;

    // Methods
    public Pair()
    {
    }

    public Pair(object x, object y)
    {
        this.First = x;
        this.Second = y;
    }
}
[Serializable]
public sealed class Triplet
{
    // Fields
    public object First;
    public object Second;
    public object Third;

    // Methods
    public Triplet()
    {
    }

    public Triplet(object x, object y)
    {
        this.First = x;
        this.Second = y;
    }

    public Triplet(object x, object y, object z)
    {
        this.First = x;
        this.Second = y;
        this.Third = z;
    }
}

이상 두 개의 동 동 은 2 개, 3 개의 속성 을 나타 내 는 직렬 화 대상 이다.하지만 이들 의 속성 은 모두 object 이 며, 네 임 스페이스 는 System. Web. UI 입 니 다. 즉, System. Web. dll 에 있 습 니 다.
네.net 4.0 에서 C \ # Tuple 이 1 - 8 개의 강 한 유형 속성 을 표시 할 수 있 는 대상 을 추 가 했 습 니 다. mscorlib. dll 의 System 네 임 스페이스 에서
 
public static class Tuple
{
    // Methods
    internal static int CombineHashCodes(int h1, int h2)
    {
        return (((h1 << 5) + h1) ^ h2);
    }

    internal static int CombineHashCodes(int h1, int h2, int h3)
    {
        return CombineHashCodes(CombineHashCodes(h1, h2), h3);
    }

    internal static int CombineHashCodes(int h1, int h2, int h3, int h4)
    {
        return CombineHashCodes(CombineHashCodes(h1, h2), CombineHashCodes(h3, h4));
    }

    internal static int CombineHashCodes(int h1, int h2, int h3, int h4, int h5)
    {
        return CombineHashCodes(CombineHashCodes(h1, h2, h3, h4), h5);
    }

    internal static int CombineHashCodes(int h1, int h2, int h3, int h4, int h5, int h6)
    {
        return CombineHashCodes(CombineHashCodes(h1, h2, h3, h4), CombineHashCodes(h5, h6));
    }

    internal static int CombineHashCodes(int h1, int h2, int h3, int h4, int h5, int h6, int h7)
    {
        return CombineHashCodes(CombineHashCodes(h1, h2, h3, h4), CombineHashCodes(h5, h6, h7));
    }

    internal static int CombineHashCodes(int h1, int h2, int h3, int h4, int h5, int h6, int h7, int h8)
    {
        return CombineHashCodes(CombineHashCodes(h1, h2, h3, h4), CombineHashCodes(h5, h6, h7, h8));
    }

    public static Tuple<T1> Create<T1>(T1 item1)
    {
        return new Tuple<T1>(item1);
    }

    public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2)
    {
        return new Tuple<T1, T2>(item1, item2);
    }

    public static Tuple<T1, T2, T3> Create<T1, T2, T3>(T1 item1, T2 item2, T3 item3)
    {
        return new Tuple<T1, T2, T3>(item1, item2, item3);
    }

    public static Tuple<T1, T2, T3, T4> Create<T1, T2, T3, T4>(T1 item1, T2 item2, T3 item3, T4 item4)
    {
        return new Tuple<T1, T2, T3, T4>(item1, item2, item3, item4);
    }

    public static Tuple<T1, T2, T3, T4, T5> Create<T1, T2, T3, T4, T5>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5)
    {
        return new Tuple<T1, T2, T3, T4, T5>(item1, item2, item3, item4, item5);
    }

    public static Tuple<T1, T2, T3, T4, T5, T6> Create<T1, T2, T3, T4, T5, T6>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6)
    {
        return new Tuple<T1, T2, T3, T4, T5, T6>(item1, item2, item3, item4, item5, item6);
    }

    public static Tuple<T1, T2, T3, T4, T5, T6, T7> Create<T1, T2, T3, T4, T5, T6, T7>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7)
    {
        return new Tuple<T1, T2, T3, T4, T5, T6, T7>(item1, item2, item3, item4, item5, item6, item7);
    }

    public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>> Create<T1, T2, T3, T4, T5, T6, T7, T8>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8)
    {
        return new Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>>(item1, item2, item3, item4, item5, item6, item7, new Tuple<T8>(item8));
    }
}

 
그 중의 Tuple <... > 은 모두 [Serializable] 속성 이 서열 화 될 수 있 음 을 나타 낸다.이 를 통 해 알 수 있 듯 이 Tuple 은 간단 한 공장 일 뿐 입 니 다. 이 를 사용 하면 Tuple <... > 유형의 대상 을 만 들 수 있 습 니 다.사용 에 대해 서 는 더 이상 말씀 드 리 지 않 겠 습 니 다. 개인 적 으로 는 Pair 와 Triplet 대신 Tuple 을 사용 하 는 것 이 좋 습 니 다.

좋은 웹페이지 즐겨찾기