啊!好吧,我将把它作为一个问题发布,因为我不知道为什么我会看到这个错误......但当然,当我看到它时,它现在是如此明显。现在拍自己的头。不过,我会把它留在这里取乐。看看你能不能抓住它。
今晚在为 WeakDictionary 类实现 TryGetValue 时,我遇到了一些奇怪的事情。我收到一个错误,我不知道为什么。
这是代码:
public bool TryGetValue(TKey key, out TItem value)
{
WeakReference<TItem> weakReference;
if(_itemStorage.TryGetValue(key, out weakReference))
if(weakReference.TryGetTarget(out value))
return true;
else
value = default(TItem);
return false;
}
这是我得到的错误:
在控制离开当前方法之前,必须分配 out 参数“值”。
在我看来,所有代码路径在返回之前都设置了“值”。
如果第一个“if”失败,则“else”子句设置“value”。
但是,如果第一个“if”通过,则下一行“weakReference.TryGetTarget”是否设置了“值”,原因与我被警告的完全相同(即“TryGetTarget”本身有一个“out”参数,因此它也必须在返回之前在内部设置其 out 参数)?
就像我说的,我遗漏了一些明显的东西。(我需要睡觉!)