컴파일러 오류 CS0686
‘accessor’ 접근자는 ‘type’ 형식에 대해 ‘member’ 인터페이스 멤버를 구현할 수 없습니다. 명시적 인터페이스 구현을 사용합니다.
제안: 이 오류는 속성 또는 이벤트와 연결된 자동 생성된 메서드와 충돌하는 메서드 이름을 포함하는 인터페이스를 구현할 때 발생할 수 있습니다. 속성에 대한 get/set 메서드가 get_property 및 set_property로 생성되고, 이벤트에 대한 add/remove 메서드가 add_event 및 remove_event로 생성됩니다. 인터페이스에 이러한 메서드 중 하나가 포함되어 있으면 충돌이 발생합니다. 이 오류를 방지하려면 명시적 인터페이스 구현을 사용하여 메서드를 구현합니다. 이 작업을 수행하려면 함수를 다음과 같이 지정합니다.
Interface.get_property() { /* */ }
Interface.set_property() { /* */ }
예 1
다음 샘플에서는 CS0686을 생성합니다.
// CS0686.cs
interface I
{
int get_P();
}
class C : I
{
public int P
{
get { return 1; } // CS0686
}
}
// But the following is valid:
class D : I
{
int I.get_P() { return 1; }
public static void Main() {}
}
예제 2
이벤트를 선언할 때도 이 오류가 발생할 수 있습니다. 이벤트 구문은 add_event
및 remove_event
메서드를 자동으로 생성하며, 다음 샘플과 같이 인터페이스에서 동일한 이름을 가진 메서드와 충돌할 수 있습니다.
// CS0686b.cs
using System;
interface I
{
void add_OnMyEvent(EventHandler e);
}
class C : I
{
public event EventHandler OnMyEvent
{
add { } // CS0686
remove { }
}
}
// Correct (using explicit interface implementation):
class D : I
{
void I.add_OnMyEvent(EventHandler e) {}
public static void Main() {}
}
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기