c# new in object declaration when inherit and override
例如,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class Foo { public virtual bool DoSomething() { return false; } } public class Bar : Foo { public override bool DoSomething() { return true; } } public class Test { public static void Main() { Foo test = new Bar(); Console.WriteLine(test.DoSomething()); } } |
为什么答案是真的?"new bar()"是什么意思?"new bar()"不是指分配内存吗?
在这种情况下,有一个名为
除非使用虚拟/重写,否则C只考虑引用的类型。也就是说,"引用foo"类型的任何变量都将调用foo.dosomething(),而任何"引用bar"类型都将调用bar.dosomething(),无论被引用的对象实际上是什么类型。
1 |
它返回