博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# using 关键字使用整理
阅读量:4288 次
发布时间:2019-05-27

本文共 1701 字,大约阅读时间需要 5 分钟。

一、using指令

using 指令有三种用途:

  • 允许在命名空间中使用类型,这样无需在该命名空间中限定某个类型的使用:

    using System.Text;
  • 允许访问类型的静态成员,而无需限定使用类型名称进行访问:

    using static System.Math;
  • 为命名空间或类型创建别名。 这称为 using 别名指令

    using Project = PC.MyCompany.Project;

二、using语句

提供能确保正确使用  对象的方便语法。

下面的示例演示如何使用 using 语句。

using (Font font1 = new Font("Arial", 10.0f))         {            byte charset = font1.GdiCharSet;        }

 和  是访问非托管资源(本例中为文件句柄和设备上下文)的托管类型的示例。 有许多其他类别的非托管资源和封装这些资源的类库类型。 所有这些类型都必须实现  接口。

按照规则,当使用 IDisposable 对象时,应在 using 语句中声明和实例化此对象。 

using 语句按照正确的方式调用对象上的 方法,并(在您按照前面所示方式使用它时)会导致在调用  时对象自身处于范围之外。 

在 using 块中,对象是只读的并且无法进行修改或重新分配。

using 语句确保调用 ,即使在调用对象上的方法时发生异常也是如此。 通过将对象放入 try 块中,并在调用 finally 块中的,可以获得相同的结果;

实际上,这就是编译器转换 using 语句的方式。 前面的代码示例在编译时将扩展到以下代码(请注意,使用额外的大括号为对象创建有限范围):

{              Font font1 = new Font("Arial", 10.0f);              try              {                byte charset = font1.GdiCharSet;              }              finally              {                if (font1 != null)                  ((IDisposable)font1).Dispose();              }            }

如下面的示例所示,可以在 using 语句中声明一个类型的多个实例。

using (Font font3 = new Font("Arial", 10.0f),                        font4 = new Font("Arial", 10.0f))            {                // Use font3 and font4.            }

可以实例化资源对象,然后将变量传递给 using 语句,但这不是最佳做法。 在这种情况下,该对象将在控制权离开 using 块之后保持在范围内,即使它可能将不再具有对其非托管资源的访问权也是如此。 换句话说,再也不能完全初始化该对象。 如果尝试在 using 块外部使用该对象,则可能导致引发异常。 由于这个原因,通常最好是在 using 语句中实例化该对象并将其范围限制在 using 块中。

Font font2 = new Font("Arial", 10.0f);            using (font2) // not recommended            {                // use font2            }            // font2 is still in scope            // but the method call throws an exception            float f = font2.GetHeight();

更多:

转载地址:http://ljogi.baihongyu.com/

你可能感兴趣的文章
android入门(一)---UI组件之文本框(TextView)
查看>>
演示动画怎么实现的
查看>>
android入门---Activity组件.活动(一)
查看>>
Android入门---GridView组件
查看>>
获取apk文件上的精美图片素材
查看>>
JAVA中文乱码解决方法
查看>>
端口号占用问题 serveral ports(8080,8009) are already in use
查看>>
浅析JAVA的抽象和接口
查看>>
SeekBar控件入门
查看>>
SharedPreference存储实战之记住登陆账号密码
查看>>
如何在项目的任何地方轻松获取到全局状态信息Context
查看>>
ListView控件性能提升
查看>>
android下拉刷新功能---教你实现简单的ListView下拉刷新
查看>>
ListView分页展示数据功能一(按钮方式)
查看>>
Android四大组件之服务(一)-----服务基础功能简述
查看>>
Android通知Notification入门小例子(一)
查看>>
Android中通知的提示音、震动和LED灯效果小例子
查看>>
SQLite数据库创建、更新入门
查看>>
SQLite数据库的增删改查
查看>>
Adb connection Error:远程主机强迫关闭一个现有的连接--解决方法
查看>>