请确保在IsAlive之后Weakreference仍然存在

本文关键字:存在 Weakreference 之后 确保 IsAlive | 更新日期: 2023-09-27 18:27:49

如果我迭代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);
        }
    }
}

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

请确保在IsAlive之后Weakreference仍然存在

您可以将它复制到一个变量中,之后您可以拥有它,也可以不拥有它,并且您可以安全地测试它:

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