这是 using 的正确用法吗?

Is this the right usage of using?

我不确定如何正确使用 using 语句。

我这样试:

[HttpDelete("{ClubId}", Name = "DeleteOpenings_Club")]
public async Task<IActionResult> DeleteClub_IsOpening([FromRoute] string ClubId)
{
        using (_db_ClubIsOpen)
        {
            var result = _db_ClubIsOpen.ClubIsOpen_TBL.Where(x => x.FK_Club == ClubId);

            foreach (var item in result)
            {
                _db_ClubIsOpen.ClubIsOpen_TBL.Remove(item);
            }

            _db_ClubIsOpen.SaveChanges();

            return Ok();
        }
}

来自C# Reference

Provides a convenient syntax that ensures the correct use of IDisposable objects. Beginning in C# 8.0, the using statement ensures the correct use of IAsyncDisposable objects.

string manyLines=@"This is line one
This is line two
Here is line three
The penultimate line is line four
This is the final, fifth line.";

using (var reader = new StringReader(manyLines))
{
    string? item;
    do {
        item = reader.ReadLine();
        Console.WriteLine(item);
    } while(item != null);
}

using 语句允许您限制 IDisposable 对象的范围并简化它们的处理。通常,您会在 using 结构的语句中声明 IDisposable 对象并在正文中使用它。

using与生命周期管理有关,这是一个复杂的问题。

通常,您在这里部署的 using 的用途是 您的方法拥有的东西 ;例如,这里:

using (var dbContext = new DbContext(whatever))
{
    // some code
}

(或者在最近的 C# 版本中只是 using var dbContext = new DbContext(whatever);

在上面,我们显然正在创建东西,所以我们的工作是确保它得到处理,这多亏了 using.

但是,在问题的示例中,不清楚 _db_ClubIsOpen 是什么,生命周期是什么,或者谁拥有它。默认情况下,我绝对不会假设一个方法负责取得任意字段的所有权,所以我不会期望使用using 在这里,在 using (_someField) 的意义上,如问题所示。相反,我希望 一些 DI/IoC 框架来处理它(如果它被注入),或者我希望该类型实现 IDipsosable,并且处理在 Dispose().

中配置字段