首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从使用语句返回值

从使用语句返回值
EN

Stack Overflow用户
提问于 2012-06-06 11:15:22
回答 3查看 3.3K关注 0票数 1

最初,此方法只在出现任何问题时才返回false,而不管它们的类型如何。我想知道如果异常应用using语句会破坏逻辑吗

是否可以以这种方式从using语句返回值:

代码语言:javascript
复制
    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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-06 11:17:28

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

除非您返回一个引用,并且Dispose()方法碰巧对它进行操作,否则这两个关注点是完全不相关的。

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

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

票数 5
EN

Stack Overflow用户

发布于 2012-06-06 11:19:48

相反,在方法创建时创建一个bool值。在内部,尝试将其值设置为true,在catch中将其值设置为false。外部捕捉返回该变量值。

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

票数 1
EN

Stack Overflow用户

发布于 2012-06-06 11:18:36

这很好--它所做的一切都是在using语句括号中调用IDisposable对象的dispose方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10913094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档