最初,此方法只在出现任何问题时才返回false,而不管它们的类型如何。我想知道如果异常应用using语句会破坏逻辑吗
是否可以以这种方式从using语句返回真值:
try
{
Measurements.DeleteAllMeasurements(ID);
string query = "DELETE FROM `Narz` WHERE `NAZk_1_ID`=@NAZ_ID";
using(OleDbConnection strukturaConnection = new OleDbConnection(CommonConnectionString + DbPath + strStructureMdb))
{
using (OleDbCommand command = new OleDbCommand(query, strukturaConnection);)
{
command.Parameters.Add("@NAZ_ID", OleDbType.Numeric, 50);
command.Parameters["@NAZ_ID"].Value = ID;
command.ExecuteNonQuery();
return true;
}
}
}
catch (Exception ex)
{
Logger.LogError(ex);
return false;
}还是我应该以另一种方式返回false?
发布于 2012-06-06 11:17:28
using语句所做的一切都是在代码块末尾隐式调用实例的IDisposable.Dispose()实现。
除非您返回一个引用,并且Dispose()方法碰巧对它进行操作,否则这两个关注点是完全不相关的。
简而言之,从using语句中返回的值并不重要。
编辑:关于您的方法“应该返回”的内容:我们没有足够的信息来了解这一点。我们甚至不知道这个方法的名字是什么。我们不知道应用程序的其他对象或方面将使用该方法。返回值应该对调用方有意义,并有效地传递操作的结果。
发布于 2012-06-06 11:19:48
相反,在方法创建时创建一个bool值。在内部,尝试将其值设置为true,在catch中将其值设置为false。外部捕捉返回该变量值。
使用将不会影响您的代码或我的代码。这只是为了隐式地调用IDisposable.Dispose()。
发布于 2012-06-06 11:18:36
这很好--它所做的一切都是在using语句括号中调用IDisposable对象的dispose方法
https://stackoverflow.com/questions/10913094
复制相似问题