+++ /dev/null
-//-- 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);
- }
-}