[c#] “숨기기가 의도 된 경우 새 키워드 사용”경고

화면 하단에 경고가 있습니다.

경고 1 ‘WindowsFormsApplication2.EventControlDataSet.Events’는 상속 된 멤버 ‘System.ComponentModel.MarshalByValueComponent.Events’를 숨 깁니다. 은폐가 의도 된 경우 새 키워드를 사용하십시오. C : \ Users \ myComputer \ Desktop \ Event Control \ WindowsFormsApplication2 \ EventControlDataSet.Designer.cs 112 32 eventControl

두 번 클릭하면 다음과 같이 표시됩니다.

public EventsDataTable Events {
    get {
        return this.tableEvents;
    }

누구든지 이것을 제거하는 방법을 말해 줄 수 있습니까?



답변

클래스에는 기본 클래스가 있으며이 기본 클래스에는 클래스에 의해 재정의되는 Events라는 속성 (가상 또는 추상이 아님)도 있습니다. 재정의하려면 public 한정자 뒤에 “new”키워드를 넣으십시오. EG

public new EventsDataTable Events
{
  ..
}

재정의하지 않으려면 속성 이름을 다른 것으로 변경하십시오.


답변

@wdavo가 정확합니다. 함수도 마찬가지입니다.

Update와 같은 기본 함수를 재정의하는 경우 하위 클래스에 다음이 필요합니다.

new void Update()
{
  //do stufff
}

함수 선언 시작시 새로운 기능이 없으면 경고 플래그가 표시됩니다.


답변

아래 코드 Class A에서 인터페이스 IShow를 구현하고 메서드를 구현합니다 ShowData. Class B상속 Class A합니다. 에서 ShowData메서드 Class B를 사용 하려면 기본 클래스 메서드 를 숨기려면 메서드에 키워드를 사용해야 new하고 ShowData메서드 를 확장 Class A하려면 override키워드를 사용해야 합니다.

interface IShow
{
    protected void ShowData();
}

class A : IShow
{
    protected void ShowData()
    {
        Console.WriteLine("This is Class A");
    }
}

class B : A
{
    protected new void ShowData()
    {
        Console.WriteLine("This is Class B");
    }
}


답변

부모 함수에는 virtual키워드 가 필요하고 자식 함수 override에는 함수 정의 앞에 키워드가 필요합니다 .


답변