Я новичок в переполнении стека, поэтому, пожалуйста, успокойся! Я читаю C# в Depth, но я столкнулся с сценарием, который, как я полагаю, не охвачен. Быстрый поиск в Интернете не вызвал никаких результатов.Тип вывода для аргументов типа общих методов
Say я определяю следующие перегруженные методы:
void AreEqual<T>(T expected, T actual)
void AreEqual(object expected, object actual)
Если я позвоню AreEqual()
без указания типа аргумента:
AreEqual("Hello", "Hello")
родовой или не общая версия методы вызывается ли? Вызывается ли общий метод с аргументом типа, который выводится, или является не общим методом, вызываемым с аргументами метода, которые неявно отображаются в System.Object
?
Надеюсь, мой вопрос ясен. Заранее благодарю за любой совет.
Вы могли бы, конечно, написать простой код, чтобы проверить это ... –
http://blogs.msdn.com/b/ericlippert/archive/2009/07/30/generics-are-not-templates.aspx –
@Mitch Wheat - правда, но тогда я бы не стал писать свой первый пост. И это полезно для других, чтобы увидеть ответ здесь. – zekesteer