using 的用法

背景知识:

        在项目中,经常会看到这样的代码 using( ){ } ,一直不明白为什么会这么写,这么写的好处是什么,之前在面试的过程中也遇到过这样的问题,我是这样回答的:这样写可能跟垃圾回收机制有关吧。当然,只是答对额一小部分,那么接下来我们一起研究研究吧。
 
using 用法:
        1. 当然,在cs代码中,你看代码的最上面就可以看出,它可以通过 using 关键字把命名空间调出来,这样写的好处就是不需要再在下面代码中加命名空间,这类似于Java代码中的 Import关键字一样;
                                
 
        2. 给命名空间重命名,和上面的类似吧。
                                
 
        3. 当然这一种,也是最重要的一种就是,形成一个范围,内部声明的变量或者实例化的实体,在范围结束时自动释放变量并且调用响应类的 Dispose 方法,换句话说:一个函数里可能会处理某个对象,using语句可以保证对象被恰当的处理掉。当然用try { } finally { }也可以实现,但是代码美观程度不如using
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (Student st = new Student())
            { 
            
            }
        }
    }
    public class Student
    {
        public string Name { get; set; }

        public int Age { get; set; }
    }
} 

 

上面为代码,但是using处报错了,什么错呢?“using 语句中所使用的类型必须可隐式转化System.IDiposable”,就是说啊,你using里的类必须实现了Dispose()方法,没这个方法,那么它在范围结束时,是不能消除对应的实例的。完善后的代码如下:
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (Student st = new Student())
            {

            }
        }
    }
    public class Student : IDisposable
    {
        public string Name { get; set; }

        public int Age { get; set; }

        public void Dispose()
        {
            this.Dispose();
            GC.SuppressFinalize(this);
        }
    }
} 

 

你的类要实现IDisposable 接口,把那个在类里实现Dispose方法; 
 
posted @ 2019-04-30 17:04  NCat  阅读(318)  评论(0)    收藏  举报