C# 中的泛型與過載
阿新 • • 發佈:2019-01-22
C#中如泛型與過載有相同型別(型別等價),普通函式會優先呼叫,而且在決議過程中,泛型函式中的where條件未計入考慮。測試程式如下:
測試結果如下:class A { public override string ToString() { return "Class A"; } } interface ITest { void test(); } class B:ITest { public void test() { Console.WriteLine("Hello,World."); } } class Program { static void Test<T,U>(T t,U u) where T:ITest where U:class { t.test(); Console.WriteLine("where"); } static void Test<T>(T t, string name) { Console.WriteLine("name:{0}",name); } static void Main(string[] args) { B b = new B(); A a = new A(); Test(b, "test");//呼叫Test<T>(T t, string name) Test(b, a);//呼叫Test<T,U>(T t,U u) Console.ReadLine(); } }
name:test
Hello,World.
where