반응형
속성 선언의 "new" 키워드(c#)
.NET 프로젝트를 유지해야 합니다.코드를 훑어보다가 부동산 신고서에서 이것을 발견했습니다.
public new string navUrl
{
get
{
return ...;
}
set
{
...
}
}
저는 그게 무엇인지 궁금했습니다.new
수식어가 속성에 적용됩니까?
기본 클래스의 navUrl 속성을 숨깁니다.새 수정자를 참조하십시오.MSDN 항목에 언급된 대로 완전한 이름으로 "숨김" 속성에 액세스할 수 있습니다.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
키워드를 사용하여 기본 클래스 변수를 마스킹할 수 있습니다.
언급URL : https://stackoverflow.com/questions/3649174/new-keyword-in-property-declaration-in-c-sharp
반응형
'it-source' 카테고리의 다른 글
Gitrebase - 모든 병합 충돌이 해결된 경우에도 계속 불만 제기 (0) | 2023.06.30 |
---|---|
sql server 그룹에서 첫 번째 행 선택 (0) | 2023.06.25 |
메서드 public abstract java.util에 대한 쿼리의 유효성을 검사하지 못했습니다.목록. (0) | 2023.06.25 |
SQL 서버 저장 프로시저를 버전 제어하는 가장 좋은 방법은 무엇입니까? (0) | 2023.06.25 |
npm 피어 종속성을 자동으로 설치하는 방법은 무엇입니까? (0) | 2023.06.25 |