В this question, следующий класс определяются:Несоответствие компилятор ошибок неоднозначности
public class Program
{
int n = 0;
public void Print()
{
Console.WriteLine(n);
}
public Program()
{
}
public Program(int num = 10)
{
n = num;
}
}
Теперь, очевидно, вызов конструктора здесь с помощью new Program()
неоднозначен из-за дополнительный параметр на втором конструкторе. При прочтении этого неясно, следует ли инициализировать n
с помощью 0
или 10
.
Однако:
Фактическая отчетность проблемы кажется непоследовательным. Создав этот класс и используя его, я смог использовать new Program()
как на C#, так и на VB.Net, а также на .Net 4 или .Net 4.5. Все тесты проводились в VS2013.
В связанном вопросе, хотя, на самом деле OP получил сообщение об ошибке при использовании VB.Net В .NET 4 и VS2010:
«.ctor» является неоднозначным, поскольку несколько видов элементов с таким именем существует в классе 'ConsoleApplication2.Program'.
Так почему же ошибка иногда возникает, когда в другое время программа может быть успешно выполнена?
Для справки значение n
, когда выполнение успешно 0.
Только начинал охоту за этим в спецификации - предположил, что он должен быть где-то там, поэтому спасибо, что спасли меня! –