最初,此方法仅在出现任何问题时返回 false ,无论其类型如何。我想知道如果异常
,应用using
语句会破坏逻辑
以这种方式从using语句返回 true 值是否可以:
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 ?
答案 0 :(得分:5)
所有using语句都隐式在代码块的末尾调用实例的IDisposable.Dispose()
实现。
除非您返回引用并且Dispose()
方法恰好操纵它,否则这两个问题完全无关。
简而言之,在using语句中返回的值无关紧要。
编辑:关于您的方法“应该返回”:我们没有足够的信息来了解这一点。我们甚至不知道方法的名称是什么。并且我们不知道该方法将使用哪些其他对象或方面。返回值应对其调用者有意义,并有效地传达操作的结果。
答案 1 :(得分:1)
而是在方法创建时创建bool值。在try中将其值设置为true,并在catch中将其值设置为false。外部捕获返回该变量值。
使用将不会影响您的代码或我的代码。它只是隐含地调用IDisposable.Dispose()
。
答案 2 :(得分:0)
这样就可以了 - 所有这一切都是在using语句括号中调用IDisposable对象的dispose方法