using语句在没有大括号的情况下具有什么作用域

问题描述 投票:7回答:3

我继承了以下代码:

    using (var dataAccessConnection = da.GetConnection()) //no opening curly brace here
    using (var command = new SqlCommand(sql, dataAccessConnection.Connection))
    {
        command.CommandType = CommandType.Text;
        using (var sqlDataReader = command.ExecuteReader(CommandBehavior.CloseConnection))
        {
            while (sqlDataReader.Read())
            {
                rueckgabe.Add(new Myclass
                                  {
                                      Uid = Guid.NewGuid(),
                                      ImportVersionUid = versionUid,
                                      MyProperty = Convert.ToInt32(sqlDataReader["MyProperty"])
                                        });       
            }
        }
        command.Connection.Close();
        dataAccessConnection.Connection.Close();
    }

查看代码,我在using子句后展开了一个花括号。

代码将编译并执行预期的操作。该应用程序的行为不可预测。有时它无法访问数据库服务器。

此代码有意义吗? dataAccessConnection是否具有严格的范围?

c# ado.net using-statement
3个回答
13
投票

[using不带大括号的语句仅适用于以下语句。


1
投票

C#语言规范(Version 5)将using语句描述为:


0
投票

[从C#8.0开始,using关键字可用作一次性对象(Reference)的变量声明中的属性。语义符合您的期望-对象将自动放置在作用域的末尾。

© www.soinside.com 2019 - 2024. All rights reserved.