编译器抱怨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
// ...
}
为什么它声称这一点?
我尝试了一个不同版本的方法,其中没有yield用法(例如 just return IEnumerable<IThing>
)但使用dynamic参数,我尝试了一个没有传入dynamic的方法版本(即我们在C# 的早期版本)。这些编译。