我是一名开发人员,负责维护并不断使应用程序更快更好。我遇到了一段使用 .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/