【问题标题】:Using statement without curly braces使用不带花括号的语句
【发布时间】:2019-11-19 11:32:35
【问题描述】:

我正在查看 Npgsql 入门示例,很难理解 using 语句的使用。

var connString = "Host=myserver;Username=mylogin;Password=mypass;Database=mydatabase";

await using var conn = new NpgsqlConnection(connString);
await conn.OpenAsync();

// Insert some data
await using (var cmd = new NpgsqlCommand("INSERT INTO data (some_field) VALUES (@p)", conn))
{
 cmd.Parameters.AddWithValue("p", "Hello world");
 await cmd.ExecuteNonQueryAsync();
}

为什么要在 conn 变量的声明中添加“using”?

await using var conn = new NpgslConnection(connString);

另外,由于没有花括号,为什么在下一行插入数据时,conn 在使用前没有处理?

await using (var cmd = new NpgsqlCommand("INSERT INTO data (some_field) VALUES (@p)", conn))

什么时候处理?

【问题讨论】:

标签: c#


【解决方案1】:

使用添加来保证交易后您的连接将关闭

await using var conn = new NpgslConnection(connString);

关于你的最后一个问题。

使用新的 C# 8 using 声明,可以简化带有 using 语句的代码。不再需要大括号。在变量 r 范围的末尾(这里是方法的末尾),调用 Dispose 方法。在这里,编译器还创建了一个 *try/finally 块,以确保在发生错误时调用 Dispose。

【讨论】:

    猜你喜欢
    • 2017-06-14
    • 2012-11-22
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2023-01-16
    • 2011-11-14
    相关资源
    最近更新 更多