从USING语句返回值

时间:2012-06-06 11:15:22

标签: c# .net return idisposable using

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

3 个答案:

答案 0 :(得分:5)

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

除非您返回引用并且Dispose()方法恰好操纵它,否则这两个问题完全无关。

简而言之,在using语句中返回的值无关紧要。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

这样就可以了 - 所有这一切都是在using语句括号中调用IDisposable对象的dispose方法