Вывод типа для аргументов типа универсальных методов

Я новичок в Stack Overflow, поэтому, пожалуйста, не беспокойтесь! Я углубленно читаю C #, но натолкнулся на сценарий, который, как мне кажется, не описан. Быстрый поиск в сети тоже не дал никаких результатов.

Допустим, я определяю следующие перегруженные методы:

void AreEqual<T>(T expected, T actual)

void AreEqual(object expected, object actual)

Если я вызываю AreEqual () без указания аргумента типа:

AreEqual("Hello", "Hello")

Вызывается универсальная или неуниверсальная версия метода? Вызывается ли универсальный метод с выводимым аргументом типа или неуниверсальный метод вызывается с неявным приведением аргументов метода к System.Object ?

Надеюсь, мой вопрос ясен. Спасибо заранее за любые советы.

5
задан zekesteer 28 January 2012 в 01:41
поделиться