Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确保在IsAlive之后Weakreference仍然存在_C#_Weak References_Isalive - Fatal编程技术网

C# 确保在IsAlive之后Weakreference仍然存在

C# 确保在IsAlive之后Weakreference仍然存在,c#,weak-references,isalive,C#,Weak References,Isalive,如果我在一个Weakreferences列表上迭代,我如何确定在通过\u ref.IsAlive进行校对后,引用仍然存在 例如,我有一段代码,其中scopeReferences是Weakreferences的一部分: foreach (var _ref in scopeReferences) { if (_ref.IsAlive) { if (_ref.Target is ScriptScope) { // Is it al

如果我在一个
Weakreference
s列表上迭代,我如何确定在通过
\u ref.IsAlive进行校对后,引用仍然存在

例如,我有一段代码,其中
scopeReferences
Weakreference
s的一部分:

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);
    }
}

哦,非常感谢你。这是工作10小时后写的问题:)我尽快接受它。在C#6中,这是一行:
(\u ref.Target as ScriptScope)?.SetVariable(name,value)
。哦,这很好。谢谢你的提示。
IsAlive
只可用于一件事,那就是检测它已不存在。你有比赛条件,因为你已经为另一个方向聚集了。