在界面中,我看到了以下内容
public interface ITest : ITestBase
{
new string Item { get; set; }
}
我想在这里知道“新”的含义。
答案 0 :(得分:13)
属性或方法前面的新关键字用于隐藏非虚拟的父类中具有相同名称的成员,并且被许多(包括我)不良做法考虑,因为在许多情况下它可能不会不能给你你期望的结果。
一个例子:
class A{
public int Test(){ return 1; }
}
class B : A{
public new int Test(){ return 2; }
}
B b = new B();
Console.WriteLine( b.Test() );
A b2 = new B();
Console.WriteLine( b2.Test() );
这将分别打印2和1,并且令人困惑,因为两个对象实际上都是B类型。