.NET 2.0 泛型Quiz
Quiz 1:写出以下代码的输出
class Program
{
static void Main(string[] args)
{
A<int> a = new A<int>();
a.InternalCall(12);
}
}
![]()
class A<T>
{
public void InternalCall(T obj)
{
Test(obj);
}
![]()
public void Test<U>(U obj)
{
Console.WriteLine("U");
}
![]()
public void Test(int obj)
{
Console.WriteLine("int");
}
}
到底哪个重载会被调用呢?仅从类的里面看,似乎只有一个选择;而在调用方看,却存在两个选择……
Quiz 2:写出以下代码的输出
class Program
{
static void Main(string[] args)
{
A<int> a = new A<int>();
a.Test(12);
}
}
![]()
class A<T>
{
public void Test(T obj)
{
Console.WriteLine("T");
}
![]()
public void Test(int obj)
{
Console.WriteLine("int");
}
}
恩……这是个最奇特的例子,当你输入代码时,IDE会告诉你有两个一模一样的重载函数,那么会调用哪一个呢?
Quiz 3:写出以下代码的输出
当你做出这些题后,你能想到这些特性可以用来编写什么样的程序吗?class Program
{
static void Main(string[] args)
{
A<int> a = new A<int>();
a.Test(12);
a.Test(12.0);
}
}
![]()
class A<T>
{
public void Test<U>(U obj)
{
Console.WriteLine("U");
}
![]()
public void Test(T obj)
{
Console.WriteLine("T");
}
}
2005.11.08 来自:Csdn dotnet blog 专家群 ninputer