gpt4 book ai didi

c# - 多次处理对象

转载 作者:行者123 更新时间:2023-11-30 14:11:23 24 4
gpt4 key购买 nike

我是一名开发人员,负责维护并不断使应用程序更快更好。我遇到了一段使用 .Dispose() 的代码,它位于 using 语句中。

代码如下:

using (IDbCommand cmd = proxy.Connection.CreateCommand())
{
cmd.CommandText = "usp_GetPluginInfo";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(proxy.Connection.CreateParameter(cmd, "@dealershipId", dealershipId));
cmd.Parameters.Add(proxy.Connection.CreateParameter(cmd, "@pluginId", pluginId));
PluginInfo[] pluginInfos = PopulatePluginsFromCommand(cmd);
result = pluginInfos.First();
cmd.Dispose();
}

最后一个 不会在命令完成时处理吗?我认为在这种情况下没有必要使用 Dispose()

感谢您的帮助!

最佳答案

你是对的,没有必要。using 语句由编译器翻译为:

IDbCommand cmd = proxy.Connection.CreateCommand();

try
{
//...
}
finally
{
if(cmd != null)
((IDisposable)cmd).Dispose();
}

话虽如此,多次调用 Dispose不应该“有害”,因为正确的 IDisposable 实现应该是幂等的。但是,它是多余的,您应该删除它,因为您正在清理代码。

关于c# - 多次处理对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20253268/

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