ключевое слово" new " в объявлении свойств в c#
мне дали проект .net для поддержания. Я просто просматривал код, и я заметил это в объявлении свойства:
public new string navUrl
{
get
{
return ...;
}
set
{
...
}
}
мне было интересно, что значит new
модификатор do для свойства?
5 ответов:
он скрывает свойство navUrl базового класса. Смотрите новый модификатор. Как уже упоминалось в этой записи MSDN, вы можете получить доступ к свойству "hidden" с полными именами:
BaseClass.navUrl
. Злоупотребление любым из них может привести к массовой путанице и возможному безумию (т. е. нарушенный код).
new
скрывает свойство.это может быть так в вашем коде:
class base1 { public virtual string navUrl { get; set; } } class derived : base1 { public new string navUrl { get; set; } }
здесь, в производном классе
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.
несколько раз упоминается как
Shadowing
или способ сокрытия; вызываемый метод зависит от типа ссылки в точке вызова. это может помочь.
https://msdn.microsoft.com/en-us/library/435f1dw2.aspx
посмотрите на первый пример, это дает довольно хорошее представление о том, как
new
ключевое слово может использоваться для маскировки переменных базового класса