gpt4 book ai didi

c# - "access to disposed closure"在这里是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:58 25 4
gpt4 key购买 nike

为什么 Resharper 在以下代码示例中警告我有关“访问已处理闭包”的信息:

using (SqlCommand command = new SqlCommand())
{
command.Parameters.Add("@temp", SqlDbType.VarChar);
Action<string> action = str =>
{
command.Parameters["@temp"].Value = string.Empty;
};
}

我不在 using 语句之外使用委托(delegate)...如何解决这个问题?

最佳答案

这段代码:

Action<string> action = str =>
{
command.Parameters["@temp"].Value = string.Empty;
};

定义了一个委托(delegate)变量action,它使用了command。委托(delegate)是一种方法定义,可以作为变量传递并使用 action.Invoke() 在其他地方调用。 Command 是一个一次性的闭包。

Resharper 标记这一点的原因是因为此代码没有直接指示实际调用此委托(delegate)的时间点。原则上,委托(delegate)的定义可能会在 command 被处理后存在(并且将被调用)。

撰写本文时的最新版本 Resharper 8.1 无法确定此委托(delegate)不能真正从其他地方调用。

关于c# - "access to disposed closure"在这里是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19248282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com