using

using关键字有两个主要用途:

  • 作为指令,为命名空间创建别名或导入其他命名空间中的类型。
  • 作为语句,定义一个范围,在此范围的末尾将释放对象。

using指令

using指令有两个用途:

  • 导入其他命名空间中的类型:
using System.Text;
为命名空间或类型创建别名:
using Project = PC.MyCompany.Project;

using指令的特点:

  • using指令的作用范围限制为包含它的文件,在其他文件中的using指令,对现有文件无效。
  • using别名,用于方便讲标识符限定到命名空间或类型。using别名指令的右侧必须是一个完全限定类型。且与前面的using指令无关。
  • using指令,便于在命名空间中使用而类型,而不必指定命名空间。
  • using指令不提供对嵌套在指定命名空间中的任何命名空间的访问。

示例1

下面的示例演示如何为命名空间定义和使用using别名

namespace PC
{// Define an alias for the nested namespace.using Project = PC.MyCompany.Project;class A{void M(){// Use the aliasProject.MyClass mc = new Project.MyClass();}}namespace MyCompany{namespace Project{public class MyClass { }}}
}
using别名指令的右侧不能由开放的泛型类型。例如,不能是List<T>,但可以为List<int>创建别名。

示例2

下面演示如何为类定义using指令和using别名:

using System;// Using alias directive for a class.
using AliasToMyClass = NameSpace1.MyClass;// Using alias directive for a generic class.
using UsingAlias = NameSpace2.MyClass<int>;namespace NameSpace1
{public class MyClass{public override string ToString(){return "You are in NameSpace1.MyClass.";}}}namespace NameSpace2
{class MyClass<T>{public override string ToString(){return "You are in NameSpace2.MyClass.";}}
}namespace NameSpace3
{// Using directive:using NameSpace1;// Using directive:using NameSpace2;class MainClass{static void Main(){AliasToMyClass instance1 = new AliasToMyClass();Console.WriteLine(instance1);UsingAlias instance2 = new UsingAlias();Console.WriteLine(instance2);}}
}
// Output: 
//    You are in NameSpace1.MyClass.
//    You are in NameSpace2.MyClass.

using语句

便于正确使用IDisposable对象。

示例

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

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

File和Font是访问非托管资源的托管类型的示例。还有许多其他类型的非托管资源和对应封装这些资源的类库。所有这些类型都必须实现IDisposable接口。

当使用IDisposable对象时,应该在using语句中声明和实例化此对象。using语句能自动调用对象的Dispose方法,在调用Dispose时对象离开其作用域。在using块中,对象时只读,不能修饰也不能重新赋值。

using语句确保Dispose方法的调用,即使发生了异常。也可以将对象放在try块中并在finally块中调用Dispose来达到同样的效果,实际上,编译器就是将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();

转载于:https://www.cnblogs.com/jiawei-whu/p/4343589.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

秒懂物理计算机出题规划,57张动图, 让你秒懂高中物理原理! 考试次次拿第一

原标题&#xff1a;57张动图, 让你秒懂高中物理原理! 考试次次拿第一物理不像语文或者英语&#xff0c;文科的东西记的东西偏多&#xff0c;理解的成分偏少&#xff0c;但物理理解的成分很重&#xff0c;要死记硬背的东西反而很少。要想把物理学好&#xff0c;先要把简单的概念…

matlab机器人自动分拣_极智嘉分拣系统落地 助力打造智慧物流引擎

全球AMR引领者极智嘉(Geek)近日宣布已为知名跨境电商企业棒谷科技(Banggood)部署全柔性智能AMR分拣系统,以支持棒谷科技日益增长的海外跨境电商业务需求。棒谷科技业务体系遍及全球200多个国家。随着电商业务的加速转变,棒谷科技的发展面临线上销售增长快、业务需求难以预测、劳…

$arr['id'],$arr[id]的区别

说白了区别就是当不加的时候我们首先会考虑的是这个id是不是一个常量 例如&#xff1a; define("abc",ABC); 那么实际上$arr[id] $arr[ABC]; 所以在这个过程中就会多加了一步操作。那么引申一个问题就是 在$arr取值时尽量使用单引号就会比直接写或者加双引号就会更快…

n分频器 verilog_时钟分频系列——分数分频电路的Verilog实现

IC君的第47篇原创文章上一篇文章时钟分频系列——偶数分频/奇数分频/分数分频&#xff0c;IC君介绍了各种分频器的设计原理&#xff0c;其中分数分频器较为复杂&#xff0c;这一篇文章IC君再跟大家聊聊分数分频的具体设计实现。一个分数分频器由两部分组成&#xff1a;以ZN和ZN…

通过gdb调试分析Linux内核的启动过程

作者&#xff1a;吴乐 山东师范大学 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一、实验流程 1.打开环境 执行命令&#xff1a;cd LinuxKernel/ 执行命令&#xff1a;qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img M…

清除服务器上传队列的文件,webUploader上传demo

最近&#xff0c;要做文件上传功能&#xff0c;在同事推荐下&#xff0c;选择了webUploader插件。WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主&#xff0c;FLASH为辅的现代文件上传组件&#xff0c;详情请看官网(直接百度webUploader&#xff0c;应该是第…

HappyLeetcode64:Sqrt(x)

Implement int sqrt(int x). 这道题本质上是求sqrt(x)下最大的整数。二分查找是比较容易想到的方法。另&#xff0c;在网上又学习了下别人的牛顿迭代法。 这是我原来的写法&#xff0c;写入是错误的&#xff0c;复杂度太高 class Solution { public:int sqrt(int x) {if (x <…

德云斗笑社何九华为什么没参加_狗狗的身体卡在了门上,女主人低头一看忍不住笑了:这是膨胀了...

大家应该有看过长得像煤气罐一样体型圆圆的狗狗吧&#xff1f;它们可能是因为疾病导致的&#xff0c;也可能是被主人喂得过于肥胖了。这个故事中的狗狗被过分宠溺&#xff0c;才短短的几个月&#xff0c;它居然画风突变&#xff0c;不禁想问这是去参加宠物变形记了吗&#xff1…

服务器绑定域名可修改吗,云服务器可以绑定域名吗

云服务器可以绑定域名吗 内容精选换一换访问IIS搭建的网站不通&#xff0c;报错404。IIS上绑定的域名只填写了主机名&#xff0c;没有指定IP地址。本节操作指导用户修改IIS上绑定的域名&#xff0c;以Windows Server 2008 R2操作系统云服务器为例。登录服务器&#xff0c;选择“…

杭州保俶塔实验机器人_【科教有闻】高照实验学校Pepper机器人课程亮相2020(杭州)国际数字教育大会“智能教育引领未来”论坛...

“数化世间万物&#xff0c;一切皆有可能”&#xff0c;数字经济时代的教育新画卷正在浙江杭州徐徐展开。12月10日至11日&#xff0c;2020(杭州)国际数字教育大会(2020iDEE)在杭州国际博览中心正式开幕&#xff0c;这是一场关乎数字和创新的盛宴&#xff0c;也是一次洞见未来教…

hdu2795 Billboard 线段树

题意&#xff1a; 给出一块h*w的广告牌&#xff0c;还有n张1*u的海报&#xff0c;海报尽量往上&#xff0c;左边的位置张贴&#xff0c;问每一张海报能贴的多高。 线段树单点修改。 注意&#xff1a;因为1 < h,w < 10^9; 1 < n < 200,000&#xff0c;但实际上&…

实现iframe_面试官:来说说单点登录的三种实现方式

前言在 B/S 系统中&#xff0c;登录功能通常都是基于 Cookie 来实现的。当用户登录成功后&#xff0c;一般会将登录状态记录到 Session 中&#xff0c;或者是给用户签发一个 Token&#xff0c;无论哪一种方式&#xff0c;都需要在客户端保存一些信息&#xff08;Session ID 或 …

iphone投屏老是显示无法连接服务器,iPhone 无法投屏到电视如何解决?

使用投屏功能&#xff0c;可以在更大的屏幕上显示 iPhone 画面&#xff0c;将游戏画面、电影等从手机转移到电视屏幕&#xff0c;体验会更好。在 iOS 11 之前&#xff0c;使用 iPhone 自带的 AirPlay 功能&#xff0c;就可以轻松在智能电视上实现投屏。AirPlay 是苹果独有的无线…

js正则表达式的使用详解

本文转自&#xff1a;http://www.jb51.net/article/39623.htm 1定义正则表达式2关于验证的三个这则表达式方法3正则表达式式的转义字符1定义正则表达式在js中定义正则表达式很简单&#xff0c;有两种方式&#xff0c;一种是通过构造函数&#xff0c;一种是通过//&#xff0c;也…

帕累托最优生活例子_创业者:用博弈解决生活的难题

博弈策略的成功运用需依赖一定的环境、条件&#xff0c;在一定的博弈框架中进行。许多成语及典故&#xff0c;都是对博弈策略的令人叫绝的运用和归纳。成语故事“黔驴技穷”实际上就包含了一个不完全信息动态博弈。毛驴刚到贵州时&#xff0c;老虎摸不准这个大动物究竟有多大本…

电脑海尔电脑,海尔台式电脑好吗,海尔主机

最近有朋友询问海尔自带Win10系统使用不习惯&#xff0c;如何改成Win7系统的问题&#xff0c;这里小编向大家提供下方法&#xff0c;海尔台式机目前大多使用8代、9代intel处理器&#xff0c;改成Win7除了BIOS需要设置为兼容模式外&#xff0c;还需要你的Win7安装盘具备USB3.0/3…

《软件测试技术》课程第二周随笔

这次的博客内容为&#xff0c;举例解释等价类划分。 1. 问题描述 EditBox 在文本输入框内输入文字&#xff0c;然后按确认键。 允许接收的文字为&#xff1a;1至6个英文字符或数字。 2.等价类划分 有效等价类编号无效等价类编号包括的字符a-z,A-Z,0-91其他字符3字符串长度1-620…

图片句柄_PC微信逆向:自动保存加密的聊天图片

前言本文基于anhkgg大佬的文章《微信PC端技术研究(2)-拿下语音》原文链接&#xff1a;https://bbs.pediy.com/thread-249274.htmanhkgg大佬的这篇文章找到了保存语音消息的接口&#xff0c;这里直接给出相关特征码&#xff0c;方便定位(我使用的微信版本依旧是2.6.8.52)偏移为0…

复制密钥文件到另一台服务器,使用所有ssh密钥从第三台服务器在两台服务器之间远程复制...

我正在用python编写一个部署脚本&#xff0c;但是在我完成它之后&#xff0c;我发现可能不可能实现我的想法。在情况是这样的。在我有三个主人。在主机1:Ubuntu 12.04主机2:SUSE Linux Enterprise Server 11 SP1主机3:Windows Server 2008 R2&#xff0c;安装了Cygwin 1.7.8&am…

Unity手游之路十自动寻路Navmesh之跳跃,攀爬,斜坡

转载 Unity手游之路<十>自动寻路Navmesh之跳跃,攀爬,斜坡 分类&#xff1a; unity2013-12-27 00:50 6545人阅读 评论(5) 收藏 举报unity3dNavmesh手游自动寻路在之前的几篇Blog总&#xff0c;我们已经系统学习了自动寻路插件Navmesh的相关概念和细节。然而&#xff0c;如…