2
메서드의 반환 형식이 메서드를 다른 메서드로 전달할 때 과부하가 될 수 있다는 사실에 놀랐습니다. 리턴 타입은 서명의 일부가 아니기 때문에 이전에는 존재하지 않았던 리턴 값의 변경이 모호함을 어떻게 만들 수 있는지 알기가 어렵습니다. 그러나 이것은 void와 Task의 경우 인 것으로 보인다. 다음 사항을 고려대리자에게 할당 할 때의 반환 값 및 서명의 모호성 - Func <Task> 대 액션
class Signature
{
static public void Overload(Func<Task> countasync)
{
}
static public void Overload(Action count)
{
}
}
void Decrement() { }
Task IncrementAsync() { return Task.CompletedTask; }
void TestSig()
{
Signature.Overload(this.IncrementAsync); // no compile time error
Signature.Overload(this.Decrement); // compile time error: this call is ambiguous
}
두 번째 호출이 모호되지 않도록 여전히 첫 번째 통화를 허용하면서, 과부하 인수 유형을 정의하는 방법이 있나요?
모호성의 원인은 메서드 형식과 달리 대리자 형식이 매개 변수 형식뿐만 아니라 반환 형식으로도 구분된다는 사실입니다. 예를 들어, 이벤트 핸들러의 반환 유형에 따라 다른 이벤트 유형을 가질 수 있다는 점이 다릅니다. –