【发布时间】:2014-01-23 17:43:08
【问题描述】:
我不太明白 C# 中的修饰符new:根据new 修饰符的存在,以下代码有何不同?
class A
{
public void F() { Console.WriteLine("A::F()"); }
}
class B : A
{
public new void F() { Console.WriteLine("B::F()"); }
public static void Main()
{
A a = new B();
B b = new B();
A trueA = new A();
a.F();
b.F();
trueA.F();
Console.ReadLine();
}
}
C++中有没有等价或类似的东西?
【问题讨论】:
-
我想你的意思是new operator
-
@Habib 鉴于如果删除了
new运算符,代码甚至无法编译,我认为 OP 表示new修饰符。 -
@p.s.w.g,我认为代码可以编译,但它只会对方法隐藏发出警告。是的,你是对的,OP 询问的是方法隐藏而不是新运算符。
-
你问为什么
a.F和trueA.F()都返回"A::F()",即使a被实例化为new B()?我不太明白这个问题。 -
第二部分(C++ 等效于 C#“新修饰符”)在 Can you Hide a virtual method in c++ 中介绍
标签: c# operator-keyword