c# - "using"有什么好处

标签 c# using

我想了解两者的区别

public DataTable ExectNonActQuery(string spname, SqlCommand command)
{
    using (DataTable dt = new DataTable())
    {
        cmd = command;
        cmd.Connection = GetConnection();
        cmd.CommandText = spname;
        cmd.CommandType = CommandType.StoredProcedure;
        da.SelectCommand = cmd;
        da.Fill(dt);
        return (dt);
    }
}

public DataTable ExectNonActQuery(string spname, SqlCommand command)
{
    DataTable dt = new DataTable();
    cmd = command;
    cmd.Connection = GetConnection();
    cmd.CommandText = spname;
    cmd.CommandType = CommandType.StoredProcedure;
    da.SelectCommand = cmd;
    da.Fill(dt);
    return (dt);
    }
}

我其实很想了解使用“using”创建一个新对象而不是像这样直接创建它有什么好处

DataTable dt = new DataTable();

最佳答案

您的第一个示例不正确:using(var ...) 确保 IDisposable.Disposeusing 中声明的变量上被调用退出时。因此,您的第一个示例返回一个 disposed 对象,这几乎肯定是错误的。

通常,using block 大致等同于:

var x = new MyDisposable();
try {
    // Do something with x
} finally {
    x.Dispose();
}

由于这是 C# 中非常常见的模式,为方便起见,我们提供了一种特殊的语法。

关于c# - "using"有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10365324/

相关文章:

c# - 使用 "using"关键字时会处理什么

C++ 名称解析

c++ - 为什么我不应该将 "using namespace std"放在标题中?

c# - 使用 SoftHSM 2.2.0(带有 SHA256 的 ECDSA)C#.net 从 Pkcs11Interop 为 CKM_ECDSA_SHA256 签名 PDF

c# - Mono System.InvalidProgramException System.Net.Http.Headers.MediaTypeHeaderValue :. ctor(字符串)中的无效IL代码:方法主体为空

c# - UWP - 找不到类 PhoneLine

c# - 为什么我们在 c# 中将 using 放在 streamreader 之前

C# 修改字符串

c# - 允许多对多重复吗?

c# - USING block 在网站和 Windows 窗体中的行为不同