• using 用法拾忆


    using 用法主要包括三种:

    1、引用外部命名空间以及外部命名空间中定义的类型(指令)

    2、创建命名空间别名,避免因名称相同造成的冲突(指令)

    3、定义资源使用范围,在范围结束后释放资源对象(语句)


    1. 引用外部命名空间或者类型,允许在在本命名空间内使用引用命名空间类型:

    using System.IO;
    using System.Linq;
    using System.Text;

    2.创建命名空间别名,区别相同名称命名空间或类型:

    using txt= System.Text;

    using com=Common.Log;

    using model=Model.log;

    区别不同命名空间下相同类型也可以通过书写全名称引用,不过通过别名的直接引用更简洁。

    3.using语句块,可以根据需要适时的释放资源对象。需要注意的是using语句块定义的资源对象必须实现了IDisposable接口,

    以通过dispose函数对资源对象进行销毁释放:

    单个资源对象

    Pen pen=new Pen(Brushes.Red)

    using (pen)
    {
    }

    using (Pen pen=new Pen(Brushes.Red))
    {
    }

    同类型多个资源对象

    using (Pen pen=new Pen(Brushes.Red),blackPen=new Pen(Brushes.Black))
    {
    }

    多类型多个资源对象

    using (IDisposable pen = new Pen(Brushes.Red), image = new FileStream(@"D:file.txt",FileMode.Create))
    {
    }

    注:单个资源对象时,对象的声明可以在using内部也可以是外部已经声明过的对象;多个资源对象时必须是在using内部进行声明,

    而且using在编译期会对类型进行检查,必须保证对象类型一致;多种类型的资源对象则需要声明为IDisposable类型,初始化为使用

    的不同类型的资源对象;

    using语句块的实质等效于try..finally语句块,因为代码在编译期间会把using语句块转换为try...finally语句块进行处理,而对资源对象

    的销毁工作则在finally内通过调用Idisposable的dispose函数进行销毁,所以对象类型必须继承IDisposable接口。在使用using语句块

    时应注意不能多层嵌套using语句块,因为内层语句块中可能出现bug,这会造成外层using无法正常进行资源的释放。此使用场景应该选择使用

    try...finally进行资源对象的销毁更优。

    try

    {

    }

    finally

    {

      //资源销毁;

    }

  • 相关阅读:
    外键的缺陷
    laravel 关联模型
    n的阶乘末尾出现的次数
    JavaScript的self和this使用小结
    cocos2dx中的内存管理方式
    c++ 与 lua 简单交互参数介绍
    c++的单例模式及c++11对单例模式的优化
    cocos2dx帧动画
    cocos2dx中坐标系
    cocos2dx中替代goto的用法:do{}while(0)和CC_BREAK_IF
  • 原文地址:https://www.cnblogs.com/ultimateWorld/p/5278692.html
Copyright © 2020-2023  润新知