Код: Выделить всё
class Foo
{
public Foo(int count)
{
/* .. */
}
public Foo(int count)
{
/* .. */
}
}
Код: Выделить всё
class Foo
{
public Foo(int count)
{
/* .. */
}
public Foo(T t)
{
/* .. */
}
}
static void Main(string[] args)
{
Foo foo = new Foo(1);
}
Мой вопрос: если первый недействителен, то как второй может быть действительным? Я знаю, что класс Foo действителен, поскольку T и int — разные типы. Но когда он используется как Foo foo = new Foo(1), T получает целочисленный тип, и оба конструктора будут иметь одинаковую подпись, верно? Почему компилятор не показывает ошибку, а не выбирает для выполнения перегрузку?
Подробнее здесь: https://stackoverflow.com/questions/129 ... -signature