【发布时间】: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))
什么时候处理?
【问题讨论】:
-
conn将使用到数据库的连接,你为什么不using它。 -
回答这个问题与:docs.microsoft.com/en-us/dotnet/csharp/language-reference/… 和 docs.microsoft.com/en-us/dotnet/csharp/language-reference/… 最后一个问题几乎相同。 A:定义了一个对象将被释放的范围。
-
来自 Joel 的链接“从 C# 8.0 开始,您可以对不需要大括号的 using 语句使用以下替代语法...”
标签: c#