나는 정말로 문제가되지 않지만 조금 호기심을 자극하는 질문이 있습니다.C#의 모호한 호출에 대한 질문
두 개의 메소드가있는 클래스가 있습니다. 하나는 정적 메소드이고 다른 하나는 인스턴스 메소드입니다. 메서드는 같은 이름입니다. 'MyApp.BlockHeader.Peek (System.IO :
호출이 다음 메서드 나 속성 사이의 모호 : 내 프로젝트를 빌드 할 때
public class BlockHeader { public static BlockHeader Peek(BinaryReader reader) { // Create a block header and peek at it. BlockHeader blockHeader = new BlockHeader(); blockHeader.Peek(reader); return blockHeader; } public virtual void Peek(BinaryReader reader) { // Do magic. } }
내가 말하는 오류가 발생합니다. BinaryReader를) ' 및 'MyApp.BlockHeader.Peek (System.IO.BinaryReader) '
나는 메소드 서명이 용 다운로드 것을 알고 똑같은 방법이지만 인스턴스 멤버에서 직접 정적 메서드를 호출하는 방법을 알 수는 없습니다.
나는 아주 좋은 이유가 있다고 생각하지만, 그 이유가 누구인지 아는 사람이 있습니까?
J # 및 다른 언어가 인스턴스 멤버에서 정적 메서드를 호출 할 수 있기 때문에 이것이라고 생각합니다. CLR은 가장 낮은 공통 분모를 시행해야합니다. –
J #이 이것을 허용하는지 몰랐습니다. 흥미 롭 군. – Patrik
나는이 기괴한 발견. 이 사양은 _correct_라는 사양이 매우 분명합니다. 7.5.5 절을 보라.1,가는 비트 : "최선의 방법이 정적 방법 인 경우, 방법 그룹은 유형을 통한 단순한 이름 또는 구성원 액세스의 결과 여야합니다 ..."비트가 어떻게 발생하는지주의하십시오. "최상의"방법을 찾아 내십시오. "Bestness"는 정적을 검사하기 전에 FIRST로 명확하게 계산됩니다. 그러므로 bestness는 정적을 고려하지 않으며 귀하의 경우에는 최선의 방법을 결정할 수 없습니다. 따라서 모호성 오류. –