it-source

속성 선언의 "new" 키워드(c#)

criticalcode 2023. 6. 25. 20:11
반응형

속성 선언의 "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

반응형