Struct A : ICloneable
{
public Int32 x;
public override String ToString() {
return String.Format(”{0}”,x);
}
public object Clone() {
return MemberwiseClone();
}
}
static void main()
{
A a;
a.x = 100;
Console.WriteLine(a.ToString());
Console.WriteLine(a.GetType());
A a2 = (A)a.Clone();
ICloneable c = a2;
Ojbect o = c.Clone();
}
因为A是值类型,编译器不会出现多态行为。
看到这句话有个提问。关于编译器而言值类型编译器为什么不会出现多态行为?重写无用?
这个是编译器的选择事情,值类型分配在栈上,不支持多态估计是为了效率、简单等原因
具体可 参考 http://stackoverflow.com/questions/5557525/higher-order-polymorphism-value-types