Я спрашиваю, если я упускаю что-то очевидное, но я думаю, что, возможно, наткнулся на ошибку в компиляторе .NET.
У меня есть два проекта в .NET-решении: один Visual Basic и один C #.
Код C #, состоящий из трех перегруженных статических методов со значениями по умолчанию:
public static class Class1
{
public static void TestFunc(int val1, int val2 = 0)
{
}
public static void TestFunc(int val1 = 0)
{
}
public static void TestFunc(string val1, int val2 = 0)
{
}
}
Базовый код Visual, вызывающий один из перегруженных методов:
Option Explicit On
Option Strict On
Imports ClassLibrary1
Module Module1
Sub Main()
Dim x As Integer
Class1.TestFunc(x, 0)
End Sub
End Module
Компиляция этого кода завершится ошибкой, сообщая:
'TestFunc' неоднозначно, потому что в классе ClassLibrary1.Class1 существует несколько видов членов с таким именем.
Почему он считает этот метод неоднозначным? Существует только один Class1.TestFunc с подписью (int, int). Это ошибка или я что-то упустил?