用户kokos通过使用关键字回答了c#的隐藏特性问题。你能详细说明一下吗?使用的用途是什么?


当前回答

using的另一个重要用途是实例化一个模态对话框。

Using frm as new Form1

    Form1.ShowDialog

    ' Do stuff here

End Using

其他回答

可以通过以下示例使用别名命名空间:

using LegacyEntities = CompanyFoo.CoreLib.x86.VBComponents.CompanyObjects;

正如你所看到的,这被称为使用别名指令,它可以用来隐藏冗长的引用,如果你想在你的代码中明显地引用什么 如。

LegacyEntities.Account

而不是

CompanyFoo.CoreLib.x86.VBComponents.CompanyObjects.Account

或者简单地

Account   // It is not obvious this is a legacy entity

当使用ADO时。NET中,你可以在connection对象或reader对象上使用keywork。这样,当代码块完成时,它将自动处理您的连接。

using关键字定义对象的作用域,然后在作用域完成时释放对象。为例。

using (Font font2 = new Font("Arial", 10.0f))
{
    // Use font2
}

请参阅这里关于c#使用关键字的MSDN文章。

using语句提供了一种方便的机制来正确使用IDisposable对象。作为规则,当您使用IDisposable对象时,您应该在using语句中声明并实例化它。

using语句以正确的方式调用对象上的Dispose方法,并且(如前面所示使用它时)它还会导致对象本身在调用Dispose时超出作用域。在using块中,对象是只读的,不能被修改或重新分配。

它来自这里。

只是添加了一点我很惊讶没有出现的东西。using最有趣的特性(在我看来)是无论你如何退出using块,它总是会释放对象。这包括返回和异常。

using (var db = new DbContext())
{
    if(db.State == State.Closed)
        throw new Exception("Database connection is closed.");
    return db.Something.ToList();
}

这与是否抛出异常或是否返回列表无关。DbContext对象总是会被释放。