我已经获得了一个.net项目来维护.我只是浏览代码,我在一个属性声明中注意到了这一点:
public new string navUrl
{
get
{
return ...;
}
set
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道new
修饰符对属性做了什么?
ani*_*key 14
new
正在隐藏财产.
在你的代码中可能是这样的:
class base1
{
public virtual string navUrl
{
get;
set;
}
}
class derived : base1
{
public new string navUrl
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
在派生类中,该navUrl
属性隐藏了基类属性.
这也记录在这里.
来自msdn的代码片段.
public class BaseClass
{
public void DoWork() { }
public int WorkField;
public int WorkProperty
{
get { return 0; }
}
}
public class DerivedClass : BaseClass
{
public new void DoWork() { }
public new int WorkField;
public new int WorkProperty
{
get { return 0; }
}
}
DerivedClass B = new DerivedClass();
B.WorkProperty; // Calls the new property.
BaseClass A = (BaseClass)B;
A.WorkProperty; // Calls the old property.
Run Code Online (Sandbox Code Playgroud)