static void Main(string[] args) { MyGenericArray <int> ma = new MyGenericArray <int>(5); for (int i = 0; i < 5; i++) { ma.SetItem(i, i + 1); } // 多重泛型 MyGenericArray <int, string> ma2 = new MyGenericArray <int, string>(); // 多重带限制的泛型 MyGenericArray2 <int, string> ma3 = new MyGenericArray2 <int, string>(); // 多重带限制的泛型 //MyGenericArray2<string, string> m3 = new MyGenericArray2<string, string>(); // 泛型的继承 SonMyGenericArray <int> sma = new SonMyGenericArray <int>(3); // 泛型的继承也可以指定类型 SonMyGenericArray sma2 = new SonMyGenericArray(3); // 泛型在方法上的实现 // 泛型类 和 泛型方法的数据类型可以不一致 ma.SetItem <char>(5, 'c'); ma.SetItem <string>(5, "c"); // 非泛型类的泛型方法 int a = 10; int b = 20; char c = 'i'; char d = 'u'; Console.WriteLine("a:{0} b:{1}", a, b); Console.WriteLine("c:{0} d:{1}", c, d); Swap <int>(ref a, ref b); Swap <char>(ref c, ref d); Console.WriteLine("a:{0} b:{1}", a, b); Console.WriteLine("c:{0} d:{1}", c, d); // 泛型在委托中的应用 NumberChanger <int> n1 = new NumberChanger <int>(AddNum); NumberChanger <int> n2 = new NumberChanger <int>(MultNum); n1(25); n2(5); Console.ReadLine(); }
static void Main(string[] args) { //泛型在Class上的实现 MyGenericArray <int, string> intArray = new MyGenericArray <int, string>(5); for (int index = 0; index < 5; index++) { intArray.SetItem(index, index * 5); } for (int index = 0; index < 5; index++) { Console.Write(intArray.GetItem(index) + " "); } Console.WriteLine(); MyGenericArray <char, string> charArray = new MyGenericArray <char, string>(5); for (int index = 0; index < 5; index++) { charArray.SetItem(index, (char)(index + 97)); } for (int index = 0; index < 5; index++) { Console.Write(charArray.GetItem(index) + " "); } Console.WriteLine(); Console.WriteLine("------------------------");//泛型在方法上的实现 ParentGeneric <int, string> gm = new ParentGeneric <int, string>(); gm.GenericMethod <string>("Hello Generic Method"); gm.GenericMethod <int>(100); string s1 = "hello"; string s2 = "zilong"; Swap <string>(ref s1, ref s2); Console.WriteLine("item1 = {0}, item2 = {1}", s1, s2); int i1 = 100; int i2 = 99; Swap <int>(ref i1, ref i2); Console.WriteLine("item1 = {0}, item2 = {1}", i1, i2); Console.ReadLine(); }
static void Main(string[] args) { MyGenericArray <int> intArray = new MyGenericArray <int>(5); for (int c = 0; c < 5; c++) { intArray.SetItem(c, c * 5); } for (int c = 0; c < 5; c++) { Console.Write(intArray.GetItem(c) + " "); } Console.WriteLine(); intArray.GenericMethod <string>("Hello Generic!"); intArray.GenericMethod <int>(100); MyGenericArray <char> charArray = new MyGenericArray <char>(5); for (int c = 0; c < 5; c++) { charArray.SetItem(c, (char)(c + 97)); } for (int c = 0; c < 5; c++) { Console.Write(charArray.GetItem(c) + " "); } Console.WriteLine(); int m, n; char x, y; m = 10; n = 20; x = 'I'; y = 'V'; Console.WriteLine("m:{0};n:{1}", m, n); Console.WriteLine("x:{0};y:{1}", x, y); Swap <int>(ref m, ref n); Swap <char>(ref x, ref y); Console.WriteLine("m:{0};n:{1}", m, n); Console.WriteLine("x:{0};y:{1}", x, y); }