Csharp/C Sharp/Generics/Generic Method
Версия от 15:31, 26 мая 2010; (обсуждение)
Содержание
A prototypical generic method
using System;
public class Starter{
public static void Main(){
MethodA<int>(20);
}
public static void MethodA<T>(T param) {
Console.WriteLine(param.GetType().ToString());
}
}
Demonstrate a generic method
using System;
class ArrayUtils {
public static bool copyInsert<T>(T e, int idx, T[] src, T[] target) {
if(target.Length < src.Length+1)
return false;
for(int i=0, j=0; i < src.Length; i++, j++) {
if(i == idx) {
target[j] = e;
j++;
}
target[j] = src[i];
}
return true;
}
}
class Test {
public static void Main() {
int[] nums = { 1, 2, 3 };
int[] nums2 = new int[4];
Console.Write("Contents of nums: ");
foreach(int x in nums)
Console.Write(x + " ");
Console.WriteLine();
ArrayUtils.copyInsert(99, 2, nums, nums2);
Console.Write("Contents of nums2: ");
foreach(int x in nums2)
Console.Write(x + " ");
Console.WriteLine();
string[] strs = { "Generics", "are", "powerful."};
string[] strs2 = new string[4];
Console.Write("Contents of strs: ");
foreach(string s in strs)
Console.Write(s + " ");
Console.WriteLine();
ArrayUtils.copyInsert("in C#", 1, strs, strs2);
Console.Write("Contents of strs2: ");
foreach(string s in strs2)
Console.Write(s + " ");
}
}
Generic methods can overload nongeneric methods
using System;
public class Starter{
public static void Main(){
MethodA(5);
MethodA(5.0);
}
public static void MethodA<T>(T arg) {
Console.WriteLine("ZClass.MethodA(T arg)");
}
public static void MethodA(int arg) {
Console.WriteLine("ZClass.MethodA(int arg)");
}
public static void MethodA() {
Console.WriteLine("ZClass.MethodA()");
}
}
This is a prototypical generic method:
using System;
public class Starter {
public static void Main() {
MyClass.MethodA<int>(20);
}
}
public class MyClass {
public static void MethodA<T>(T param) {
Console.WriteLine(param.GetType().ToString());
}
}