Я повторяю ситуацию, с которой сталкиваюсь.
Допустим, у нас есть сборка с классом C#:
public class Program
{
int n = 0;
public void Print()
{
Console.WriteLine(n);
}
public Program()
{
}
public Program(int num = 10)
{
n = num;
}
}
Мы ссылаемся на приведенную выше сборку в проекте VB.NET и пытаемся создать экземпляр класса Program:
Module Module1
Sub Main()
Dim p As New Program()
p.Print()
p = New Program(20)
p.Print()
Console.ReadLine()
End Sub
End Module
Проект VB.NET не компилируется, выдавая ошибку:
'.ctor' неоднозначен, так как в классе 'ConsoleApplication2.Program' существует несколько видов членов с таким именем.
Из сообщения об ошибке видно, что компилятор VB.NET не уверен, какой конструктор вызывать, поскольку один конструктор не имеет параметров, а другой — с одним необязательным параметром. Эта проблема возникает в VS2010/.NET 4, а не в VS2012/.NET 4.5. Также в C# проблем не возникает, он успешно компилирует и запускает код инициализации объекта класса Program.
Есть ли способ создать экземпляр класса Program в VB.NET + VS2010/.NET 4 без изменения конструкторов?
VB
. Как вы думаете, каким должно быть значениеnum
для такого использования, какvar program = new Program()
? Вы необязательно хотели, чтобыnum
было10
, или это конструктор по умолчанию, гдеnum
поле инициализируется равным0
??? - person Sinatr   schedule 20.02.2014