Устранение неполадок: почему здесь не выводится вывод типа? - PullRequest
3 голосов
/ 20 апреля 2011

Учитывая тип, объявленный, как показано ниже

public class EqualityProbe<T>
{
  public EqualityProbe( Func<T> functionToGetActualValue, T expectedValue, string probeDescription) {..}

Код клиента:

// cannot infer bool here
new EqualityProbe(CanConnectToMachine, true, "Probe machine is online")
// compiles fine
new EqualityProbe<bool>(CanConnectToMachine, true, "Probe machine is online")

Насколько я понимаю, вывод типов не работает для групп методов (например, CanConnectToMachine) илианонимные методы (лямбда-выражения).
Но в этом случае почему компилятор не выводит аргумент типа из второго аргумента

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011

C # не поддерживает вывод типов для конструкторов, хотя это часто можно преодолеть с помощью использования фабричного класса.

См. Ответ здесь: Почему конструктор C # не может определить тип

1 голос
/ 20 апреля 2011

Ну, вот как C #! Это делает вывод для конструкторов. При создании экземпляра универсального типа необходимо указать типы, которые будут использоваться для универсального типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...