如果我遍历 Weakreference
列表,在通过 _ref.IsAlive
验证后,我如何确定该引用仍然存在?
例如我有这段代码,其中 scopeReferences
是 Weakreference
的一个:
foreach (var _ref in scopeReferences)
{
if (_ref.IsAlive)
{
if (_ref.Target is ScriptScope)
{
// Is it alive any more?
((ScriptScope)_ref.Target).SetVariable(name, value);
}
}
}
也许有人知道答案,我只是不想制造任何问题,因为我不知道这部分发生了什么。非常感谢大家!
最佳答案
你可以将它复制到一个变量中,之后你要么拥有它,要么不拥有它,然后你就可以安全地测试它了:
foreach (var _ref in scopeReferences)
{
ScriptScope tmp = _ref.Target as ScriptScope;
if (tmp != null)
{
tmp.SetVariable(name, value);
}
}
关于c# - 确保 Weakreference 在 IsAlive 之后仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34419846/