.NET中的using

news/2024/7/20 13:42:17 标签: 内存管理

1.using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间。这个不再赘述。

2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型。 
这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。

3.用于自动内存管理。先看一个例子

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             //创建要写入的临时文件字节
 6             Byte[] byteToWrite = new Byte[] { 1, 2, 3, 4, 5 };
 7 
 8             using (FileStream fs = new FileStream("Temp.dat", FileMode.Create))
 9             {
10                 //将字节写入临时文件
11                 fs.Write(byteToWrite, 0, byteToWrite.Length);
12             }
13 
14             File.Delete("Temp.dat");
15         }
16     }

在using语句中,我们初始化一个对象,并将它的对象保存到一个变量中。然后在using语句的大括号里访问该变量。编译这段代码,编译器自动生成一个tyr块和finally块,在finally快中,编译器会将变量转型成一个IDisposable并调用Dispose方法。显然,using语句只能用于那些实现了IDisposable接口的类型。

那么,using语句的本质是什么?就是下面这个例子:

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Byte[] byteToWrite = new Byte[] { 1, 2, 3, 4, 5 };
 6 
 7             //创建要写入的临时文件字节
 8             FileStream fs = new FileStream("Temp.dat", FileMode.Create);
 9             try
10             {
11                 fs.Write(byteToWrite, 0, byteToWrite.Length);
12             }
13             finally
14             {
15                 //显示关闭文件
16                 if (fs != null)
17                     fs.Dispose();
18             }
19 
20             File.Delete("Temp.dat");
21   }

 

转载于:https://www.cnblogs.com/sleekay/archive/2013/05/31/3109507.html


http://www.niftyadmin.cn/n/1261787.html

相关文章

php 双引号 常量,php易错笔记-变量,常量,运算符

变量基本$4site not yet; // 非法变量名;以数字开头$_4site _4site; // 合法变量名;以下划线开头$i站点is mansikka; // 合法变量名;可以用中文?>引用赋值$foo Bob; // 将 Bob 赋给 $foo$bar &$foo; // 通过 $bar 引用 $foo$bar…

《中国合伙人》有感

《中国合伙人》有感 成冬青说:曾经男人的梦想最初都是从女人开始的,让我想起从前爱抄点东西,思考点东西。当恋爱时候就是想以后怎么努力奋斗,不让自己的女朋友受苦受累,当失去的时候才知道,以后的生活的谁都…

火狐下input密码框自动填充值的问题.

摘自:http://blog.csdn.net/qq413041153/article/details/8314483昨 天在测试的时候发现了一个很怪异的问题.原本的设计逻辑是:当用户修改用户信息的时候.密码一栏默认是空.就表示用户不修改密码.只有密码一栏填写了值的 时候后台才会更新密码.在ie和chrome下测试都…

php中怎么弹出表单并返回,如何使用PHP将登录表单错误返回到同一页面?

搜索热词我对PHP比较陌生,并且已经用尽互联网试图找到这个问题的答案.我看过无数的例子,但人们看起来与我的登录系统非常不同,我无法解密它.到目前为止,这是我的代码:的index.htmlgt;Meta http-equiv"Content-Type" content"text/html; charsetiso-8…

netcore转java,.NET5云原生开发优势大,Java开发们或要转.NET!

“随着互联网持续高歌猛进,相关技术名词也是层出不穷。微服务、容器化、DevOps、ServerLess、FaaS,这两年最火的,当属云原生Cloud Native!当下大部分企业还在追逐微服务架构落地,而下一代的架构云原生已如火如荼。程序…

java不重启动态建表,如何在不重启cassandra节点的情况下重建sstable?

当我在一个节点上做一个紧凑的工作时,它会抛出以下异常:ERROR [CompactionExecutor:116922] 2016-04-07 12:51:17,291 CassandraDaemon.java:153 - Exception in thread Thread[CompactionExecutor:116922,1,main]org.apache.cassandra.io.sstable.Corru…

大话数据结构读书笔记 第一章绪论 逻辑结构与物理结构

“按照视角的不同,我们把数据结构分为逻辑结构和物理结构”。 1.5.1 逻辑结构,摘“逻辑结构:是指数据对象中数据元素之间的相互关系。其实这也是我们今后最需要关注的问题” 笔记: 1.相互关系:数据对象中;数…

php curl.dll扩展,PHP 加载 curl.dll 扩展失败的原因和解决方法-Go语言中文社区

测试环境:PHP 5.2.5 WINDOWS SERVER 2003 SP2 IIS6.0今天安装 Drupal 的 SimpleTest 模块的时候,提示失败,说我的PHP没有安装 curl 库,查看phpinfo确实没有找到“curl”配置信息,开始以为 curl 和mysqli一样只是个扩…