C#语法手册

using 关键字的使用


Using 关键字有三个主要用途:
1) using 语句定义一个范围,在此范围的末尾将释放对象。
2) using 指令为命名空间创建别名,或导入在其他命名空间中定义的类型。
3) using static 指令导入单个类的成员。

//#csg001-01
//using 指定一个命名空间,可以使你在无需指定命名空间的情况下使用命名空间内的类型。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Common;
//#csg001-02
//using static 指令指定一种类型,可以使你在无需指定类型名称即可访问其静态成员和嵌套类型。
//该指令是在 C# 6 中引入的。
using static System.Math;

//#csg001-03
//为命名空间指定别名
using Unicode = System.Text.Unicode;
//为类型指定别名
using NewName = System.Text.Encoder;
//using 别名指令的右侧不能有开放式泛型类型。
//例如,不能为 List<T> 创建 using 别名,但可以为 List<int> 创建 using 别名。
using UsingAlias = System.Collections.Generic.List<string>;

namespace SampleNamespace
{
    //#csg001-04
    //除了在源代码初始位置使用using,还可以在命名空间的初始位置使用using。
    using System.Data;
    using System.IO;

    class SampleClassA
    {
        public void Function()
        {
            //#csg001-02
            //直接使用System.Math里的静态方法
            Console.Write(Abs(123.456));
        }


        public void Function1()
        {

            //#csg001-05
            //提供可确保 IDisposable 被正确使用的方便语法。
            //从 C#8.0 开始,using 语句可支持 IAsyncDisposable 。
            using (var stream = new MemoryStream())
            {
                //stream 操作...
                //stream 对象会在该大括号结束后被释放。
            }


            //#csg001-06
            //从 C# 8.0 开始,可以不需要使用大括号
            //当所在方法结束时执行 IDisposable 或 IAsyncDisposable 操作。
            using var stream2 = new MemoryStream();
            //stream2 操作...
            //stream2 对象会在所在方法结束后被释放。


        }
    }
}