가능한 중복은 :
C# 4: conflicting overloaded methods with optional parametersC 번호 과부하 방법 동작
난 그냥 하나 개의 작은 연구 만든 다음 코드가 있습니다.
나는 컴파일러는 항상 2 개 매개 변수와 함께 짧은 방법을 선택하는 이유 질문이 있습니다. 물론이 모든 작업은 인터페이스없이 동일한 방식으로 수행됩니다.namespace Test { class Program { public interface ITestA { void MethodA(int a, int b); } public class TestAClass : ITestA { public void MethodA(int a, int b) { Console.WriteLine("MethodA with param"); } public void MethodA(int a, int b, bool logic = true) { Console.WriteLine("MethodA logic with param"); } } public interface ITestB { void MethodA(int a, int b, bool logic = true); } public class TestBClass : ITestB { public void MethodA(int a, int b) { Console.WriteLine("MethodB with param"); } public void MethodA(int a, int b, bool logic = true) { Console.WriteLine("MethodB logic with param"); } } static void Main(string[] args) { var testA = new TestAClass(); testA.MethodA(1, 1); var testB = new TestBClass(); testB.MethodA(1, 1); } } }
감사
인터페이스가 있거나없는 경우와 같은 방식으로 작동하는 경우 질문에 인터페이스를 표시하는 이유는 무엇입니까? 아이디어는 동작을 재현하는 데 필요한 * 최소량의 코드를 사용하는 것입니다. 따라서 우리는 관련없는 세부 사항보다는 실제 질문에 집중할 수 있습니다. –
또한, 이것은 가장 확실하게 ** 연산자가 오버로드되지 않고, 오히려 * 메서드 * 오버로딩, 완전히 다른 것입니다. –
그리고 주요 문제는 인터페이스가 아닌 선택적 매개 변수 때문입니다. – Rik