public static void Main() { ArraySet <string> sset = new ArraySet <string>(); ArraySet <Type> tset = new ArraySet <Type>(); ArraySet <int> iset = new ArraySet <int>(); ArraySet <Colour> cset = new ArraySet <Colour>(); sset.Add("A"); sset.Add("B"); iset.Add(1); iset.Add(2); iset.Add(3); cset.Add(Colour.Red); cset.Add(Colour.Blue); cset.Add(Colour.Green); tset.Add(typeof(string)); Console.WriteLine("sset = " + sset); Console.WriteLine("iset = " + iset); Console.WriteLine("cset = " + cset); Console.WriteLine("tset = " + tset); Console.WriteLine("sset X iset = " + sset.Cross <int>(iset)); Console.WriteLine("sset X tset = " + sset.Cross <Type>(tset)); Console.WriteLine("sset X sset = " + sset.Cross <string>(sset)); Console.WriteLine("sset X cset = " + sset.Cross <Colour>(cset)); Console.WriteLine("tset X sset = " + tset.Cross <string>(sset)); Console.WriteLine("tset X tset = " + tset.Cross <Type>(tset)); Console.WriteLine("tset X iset = " + tset.Cross <int>(iset)); Console.WriteLine("tset X cset = " + tset.Cross <Colour>(cset)); Console.WriteLine("iset X sset = " + iset.Cross <string>(sset)); Console.WriteLine("iset X tset = " + iset.Cross <Type>(tset)); Console.WriteLine("iset X iset = " + iset.Cross <int>(iset)); Console.WriteLine("iset X cset = " + iset.Cross <Colour>(cset)); Console.WriteLine("cset X sset = " + cset.Cross <string>(sset)); Console.WriteLine("cset X tset = " + cset.Cross <Type>(tset)); Console.WriteLine("cset X iset = " + cset.Cross <int>(iset)); Console.WriteLine("cset X cset = " + cset.Cross <Colour>(cset)); }