Перегрузка метода на основе общих ограничений? ⇐ C#

Место общения программистов C#
Anonymous
Перегрузка метода на основе общих ограничений?

Сообщение Anonymous »

Могу ли я каким-то образом иметь перегруженные методы, которые различаются только ограничениями общего типа?

Это не компилируется:

Код: Выделить всё

    void Foo(T bar) where T : class
{

}

void Foo(T bar) where T : struct
{

}
Поскольку это «открытые» методы, фактический метод должен быть закрытым/сконструированным/полностью определенным, когда на него ссылаются в другом месте кода с конкретно типизированным T, и тогда было бы понятно, какую перегрузку вызывать.

Очевидное решение — не перегружать их, но мне интересно, почему это не работает в C#?

Дополнительный вопрос: если это просто ограничение компилятора C#, допускает ли IL такую ​​перегрузку?

Подробнее здесь: https://stackoverflow.com/questions/125 ... onstraints

Вернуться в «C#»