确保在IsAlive之后仍然存在Weakreference

时间:2015-12-22 16:03:17

标签: c# weak-references isalive

如果我遍历Weakreference的列表,我怎么能确定,在通过_ref.IsAlive进行校对后,引用仍然存在?

例如,我有这段代码,其中scopeReferencesWeakreference的代码:

foreach (var _ref in scopeReferences)
{
    if (_ref.IsAlive)
    {
        if (_ref.Target is ScriptScope)
        {
            // Is it alive any more?
            ((ScriptScope)_ref.Target).SetVariable(name, value);
        }
    }
}

也许有人知道答案,我只是不想因为事实而产生任何问题,我不知道这部分发生了什么。非常感谢你们!

1 个答案:

答案 0 :(得分:6)

您可以将其复制到变量中,之后您可以将其复制或不使用,您可以安全地测试它:

foreach (var _ref in scopeReferences)
{
    ScriptScope tmp = _ref.Target as ScriptScope;
    if (tmp != null)
    {
        tmp.SetVariable(name, value);
    }
}