Компилятор жалуется, что resultingThing
в приведенном ниже коде используется до назначения.
private IEnumerable<IThing> FindThings(dynamic spec)
{
if (spec == null)
yield break;
IThing resultingThing;
if (spec.Something > 0 && dictionary.TryGetValue(spec.Something, out resultingThing))
yield return resultingThing;
else
// ...
}
Почему это утверждается?
Я пробовал другую версию метода, в которой не используется доходность (например, только return IEnumerable<IThing>
), но с параметром dynamic, и я пробовал версию метода в котором не передается dynamic (то есть то, что мы делали в предыдущих версиях C#). Эти компилируются.
resultingThing
в случаеelse
? - person adrianbanks   schedule 19.05.2011resultingThing
вelse
. Кроме того, инициализация его значениемnull
избавляет от ошибки компилятора, как и ожидалось. - person Kit   schedule 19.05.2011resultingThing
с помощью ключевого словаdefault
, то естьdefault(IThing)
. Для ссылочных типов это должно бытьnull
; для типов значений он должен быть эквивалентом типа, созданного по умолчанию. - person Nathan Ernst   schedule 19.05.2011