Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gtest-065.cs « tests « mcs - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: c66cf890104f41a6f1100689df4ee6861795cca7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//-- ex-gen-type-parameter-in-constraint

using System;
using System.Collections.Generic;

// A constraint may involve type parameters 
// A type may have multiple constraints 

struct ComparablePair<T,U> : IComparable<ComparablePair<T,U>>
  where T : IComparable<T> 
  where U : IComparable<U> {
  public readonly T Fst;
  public readonly U Snd;
  
  public ComparablePair(T fst, U snd) {
    Fst = fst; Snd = snd;
  }
  
  // Lexicographic ordering
  public int CompareTo(ComparablePair<T,U> that) {
    int firstCmp = this.Fst.CompareTo(that.Fst);
    return firstCmp != 0 ? firstCmp : this.Snd.CompareTo(that.Snd);
  }

  public bool Equals(ComparablePair<T,U> that) {
    return this.Fst.Equals(that.Fst) && this.Snd.Equals(that.Snd);
  }

  public override String ToString() {
    return "(" + Fst + ", " + Snd + ")";
  }
}

// Sorting soccer world champions by country and year

class MyTest {
	static void Test ()
	{
		new ComparablePair<string,int>("Brazil", 2002);
	}

  public static void Main(string[] args) {
    List<ComparablePair<string,int>> lst 
      = new List<ComparablePair<string,int>>();
    lst.Add(new ComparablePair<String,int>("Brazil", 2002));
    lst.Add(new ComparablePair<String,int>("Italy", 1982));
    lst.Add(new ComparablePair<String,int>("Argentina", 1978 ));
    lst.Add(new ComparablePair<String,int>("Argentina", 1986 ));
    lst.Add(new ComparablePair<String,int>("Germany", 1990));
    lst.Add(new ComparablePair<String,int>("Brazil", 1994));
    lst.Add(new ComparablePair<String,int>("France", 1998));
    // lst.Sort();
    foreach (ComparablePair<String,int> pair in lst) 
      Console.WriteLine(pair);
  }
}