Я прошу на случай, если я пропущу что-то очевидное, но я думаю, что, возможно, наткнулся на ошибку в компиляторе .NET.
У меня есть два проекта в .NET-решении, один визуальный базовый, один С#.
Код С#, состоящий из трех перегруженных статических методов со значениями по умолчанию:
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)
{
}
}
Визуальный базовый код, вызывающий один из перегруженных методов:
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). Это ошибка, или я чего-то не хватает?