如何在using语句之外使用变量

本文关键字:变量 语句 using | 更新日期: 2023-09-27 18:27:47

如何在using语句之外使用变量?

我有这个代码:

using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["batch"].ConnectionString))
{
    var size = FileBusinessLogic.LoadBatchAvgFileSizes(connection);  // size is a list
}

我需要在使用之外使用"var大小",但我不知道如何使用。如何获取列表的第二列(大小)?

有人有主意吗?

如何在using语句之外使用变量

大括号组成了自己的范围。所有变量仅在声明的作用域和内部作用域中可见。

您只需要在作用域之外声明您的变量:

int size = 0; // or declare expected type
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["batch"].ConnectionString))
{
    size = FileBusinessLogic.LoadBatchAvgFileSizes(connection); // size is a list
}
// now you have access to your variable outside the using scope.

将其作为一种方法:

private static List<int> GetSize()
{
    using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["batch"].ConnectionString))
    {
        return FileBusinessLogic.LoadBatchAvgFileSizes(connection);  // size is a list
    }
}
...
var size = GetSize();

您将能够以这种方式使用它,

var size = new List<t>() ;
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["batch"].ConnectionString))
{
 size = FileBusinessLogic.LoadBatchAvgFileSizes(connection);  
   }

您可以使用一个操作,

    Action<List<int>> handleSize = size =>
    {
        // you can do what you wanna do with size here.
        Console.WriteLine(size);
    };
    using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["batch"].ConnectionString))
    {
        var size = FileBusinessLogic.LoadBatchAvgFileSizes(connection);  // size is a list
        handleSize(size);
    }

C# 8.0中,您可以使用using声明,然后不需要将变量声明移出作用域。

using SqlConnection connection =
    new SqlConnection(ConfigurationManager.ConnectionStrings["batch"].ConnectionString)
var size = FileBusinessLogic.LoadBatchAvgFileSizes(connection);  // size is a list
// size can be used here...