我正在与聊天中的某人讨论相关问题,我想出了这段代码,它的行为与我的预期不同。
class Program
{
static void Main(string[] args)
{
new Test<SomeObject>();
Console.ReadKey();
}
}
class SomeObject
{
public SomeObject() { }
public new string ToString()
{
return "Hello world.";
}
}
class Test<T> where T : new()
{
public Test()
{
T t = new T();
object t1 = t;
Console.WriteLine(t.ToString());
Console.WriteLine(t1.ToString());
}
}
输出是:
<ProjectName>.SomeObject
<ProjectName>.SomeObject
因为第一行是从泛型类型编写的,所以我希望它使用在 SomeObject 中定义的 ToString() 方法,因为这就是该类型在运行时会变成的样子,不是吗?