C# using的使用

C#中using有三种用法:

1. 引入命名空间

2. 创建别名

3. 定义范围,强制资源清理

下面从这三个角度来谈谈using的应用。

(1)引入命名空间:using + 空间名,类似于java的import,C++的include。命名空间是一种避免类名冲突的方法,用于将不同的数据类型组合划分的方式。例如,在.NET中

很多的基本类型都位于System命名空间,数据操作类型位于System.Data命名空间。

(2)创建别名:using + 别名 = 包括详细命名空间信息的具体类型。当两个不同的命名空间中都包含了一个相同名字的类型,则在使用该类型时需要加上详细的命名空间来区别。通过using创建别名可以避免该问题。

using System;
using aClass = NameSpace1.MyClass;
using bClass = NameSpace2.MyClass;
namespace NameSpace1 
{
    public class MyClass 
    {
        public override string ToString() 
        {
            return "You are in NameSpace1.MyClass";
        }
    }
}

namespace NameSpace2 
{
    class MyClass 
    {
        public override string ToString() 
        {
            return "You are in NameSpace2.MyClass";
        }
    }
}

namespace testUsing
{
    using NameSpace1;
    using NameSpace2;
    class Class1
    {
        static void Main(string[] args)
        {
            aClass my1 = new aClass();
            Console.WriteLine(my1);
            bClass my2 = new bClass();
            Console.WriteLine(my2);
            Console.WriteLine("Press any key");
            Console.Read();
        }
    }
}


(3)定义范围,在范围结束后清理资源:using语句提供了一个脉络清晰的机制来控制资源的生存期,创建的对象会在using语句结束时被摧毁,以下代码说明了using的机制:

using(TextReader reader=new StreamReader(filename))
{
    string line;
    while((line=read.ReadLine())!=null)
    {
         Console.WriteLine(line);
    }
}
等价于:
{
    TextReader reader=new StreamReader(filename);
    try
    {
        string line;
        while((line=read.ReadLine())!=null)
        {
            Console.WriteLine(line);
        }
    }
    finally
    {
        if(reader!=null)
        {
            (IDisposible)reader.Dispose();
        }
    }
}
using是在出了作用域以后调用Dispose方法,在Dispose方法内部会自动调用Close方法。

猜你喜欢

转载自blog.csdn.net/neil3611244/article/details/71405962