首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C#中“使用”有什么用途?

在C#中“使用”有什么用途?
EN

Stack Overflow用户
提问于 2008-09-16 18:23:45
回答 28查看 310.9K关注 0票数 346

用户科科斯通过提到using关键字回答了精彩的https://stackoverflow.com/questions/9033/hidden-features-of-c问题。你能详细说明一下吗?using的用途是什么?

EN

回答 28

Stack Overflow用户

回答已采纳

发布于 2008-09-16 18:30:43

using语句的原因是确保对象一旦超出作用域就被释放,并且它不需要显式代码来确保这种情况的发生。

https://www.codeproject.com/Articles/6564/Understanding-the-using-statement-in-Chttps://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/using-objects一样,C#编译器会转换

代码语言:javascript
运行
复制
using (MyResource myRes = new MyResource())
{
    myRes.DoSomething();
}

代码语言:javascript
运行
复制
{ // Limits scope of myRes
    MyResource myRes= new MyResource();
    try
    {
        myRes.DoSomething();
    }
    finally
    {
        // Check for a null resource.
        if (myRes != null)
            // Call the object's Dispose method.
            ((IDisposable)myRes).Dispose();
    }
}

C# 8引入了一个名为“使用声明”的新语法:

using声明是一个变量声明,前面有using关键字。它告诉编译器,被声明的变量应该在封闭作用域的末尾释放。

因此,上面的等效代码是:

代码语言:javascript
运行
复制
using var myRes = new MyResource();
myRes.DoSomething();

当控件离开包含的作用域(通常是方法,但也可以是代码块)时,myRes将被释放。

票数 525
EN

Stack Overflow用户

发布于 2008-09-16 19:11:57

因为很多人仍然这样做:

代码语言:javascript
运行
复制
using (System.IO.StreamReader r = new System.IO.StreamReader(""))
using (System.IO.StreamReader r2 = new System.IO.StreamReader("")) {
   //code
}

我想很多人还是不知道你能做什么:

代码语言:javascript
运行
复制
using (System.IO.StreamReader r = new System.IO.StreamReader(""), r2 = new System.IO.StreamReader("")) {
   //code
}
票数 135
EN

Stack Overflow用户

发布于 2008-09-16 18:26:00

就像这样:

代码语言:javascript
运行
复制
using (var conn = new SqlConnection("connection string"))
{
   conn.Open();

    // Execute SQL statement here on the connection you created
}

这个try/catch/finally.将被关闭,而不需要显式调用.Close()函数,即使抛出异常也会发生这种情况,而不需要一个.Close()

票数 99
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/75401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档