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
只可用于一件事,那就是检测它已不存在。你有比赛条件,因为你已经为另一个方向聚集了。