1

最初,此方法仅在出现任何问题时才返回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 ?

4

3 回答 3

5

IDisposable.Dispose()所有 using 语句所做的只是在代码块末尾 隐式调用实例的实现。

除非您正在返回一个引用并且该Dispose()方法恰好对其进行了操作,否则这两个问题是完全不相关的。

简而言之,从 using 语句中返回什么值并不重要。

编辑:关于您的方法“应该返回”什么:我们没有足够的信息来了解这一点。我们甚至不知道该方法的名称是什么。而且我们不知道该方法将被应用程序的哪些其他对象或方面使用。返回值应该对其调用者有意义,并有效地传达操作的结果。

于 2012-06-06T11:17:28.240 回答
1

而是在方法创建时创建一个布尔值。在 try 中将其值设置为 true,在 catch 中将其值设置为 false。外部捕获返回该变量值。

使用不会影响您或我的代码。它只是用于IDisposable.Dispose()隐式调用。

于 2012-06-06T11:19:48.380 回答
0

没关系 - 它所做的只是在 using 语句括号中调用 IDisposable 对象的 dispose 方法

于 2012-06-06T11:18:36.937 回答