C#里面Using有两种用法:

1.作为指令。

  • using+命名空间,导入其他命名空间中定义的类型,这样可以在程序中直接用命名空间中的类型,不必指定命名空间;

命名空间是.NET程序在逻辑上的组织结构,而并非实际的物理结构,是一种避免类名冲突的方法,用于将不同的数据类型组合划分的方式。

using System;

  • using + 别名 = 命名空间,为命名空间或类型创建别名。

别名的好处是:当同一个文件下引用了不同的两个命名空间,但这两个命名空间都包括了一个相同名字的类型时,可以用别名的形式引用,这样可以方便使用。

以using创建别名,有效的解决了这种可能的命名冲突,尽管我们可以通过类型全名称来加以区分,但是这显然不是最佳的解决方案,using使得这一问题迎刃而解,不费丝毫功夫,同时在编码规范上看来也更加的符合编码要求。

using aClass = NameSpace1.MyClass;
using bClass = NameSpace2.MyClass;

2.作为语句。

  • 于定义一个范围,在此范围的末尾将释放对象,

C# 通过 .Net Framework 公共语言运行库(CLR)自动释放用于存储不再需要的对象的内存。内存的释放具有不确定性;

一旦CLR决定执行垃圾回收,就会释放内存。但是,通常最好尽快释放诸如:文件句柄和网路连接这样的有限资源。

using语句允许指定使用资源的对象应当何时释放。为using语句提供的对象必须实现IDisposable接口。此接口提供了Dispose方法,该方法释放对象的资源。

可以在到达 using 语句的末尾时,或者在该语句结束之前引发了异常并且控制权离开语句块时,退出 using 语句。

using System;
class C :
IDisposable
{public void UseLimitedResource(){Console.WriteLine("Usinglimitedresource...");}void IDisposable.Dispose(){Console.WriteLine("Disposinglimitedresource.");}
}
class Program
{static void Main(){using (C c = new C()){c.UseLimitedResource();}Console.WriteLine("Nowoutsideusingstatement.");Console.ReadLine();}
}

结果如下:

  • Dispose方法用于清理对象封装的非托管资源,而不是释放对象的内存,对象的内存依然由垃圾回收器控制。
  • 程序在达到using语句末尾时退出using块,而如果到达语句末尾之前引入异常则有可能提前退出。

总结:

using可以用于引入命名空间;用于别名;用于定义资源范围。

转载于:https://www.cnblogs.com/SweetMemory/p/7160115.html

基础知识之 - C# Using的用法相关推荐

  1. java入门学习笔记(二)—— Eclipse入门学习之快捷键、java语言基础知识之各类关键字及其用法简析

    一.Eclipse入门学习 1. 快捷键 对于一个编辑器,快捷键必不可少,是十分好用且有效的工具. 对于一个初学者,首先掌握了如下快捷键. (很多通用的快捷键不多说) Ctrl + / -- 注释当前 ...

  2. [转载] Python基础知识:构造函数中self用法

    参考链接: Python中的构造函数 在Python开发(http://www.maiziedu.com/course/python-px/)编程语言中有种函数叫构造函数,在这个函数里面有一个关键词叫 ...

  3. c# string 占位符_C# 基础知识系列- 9 字符串的更多用法(一)

    0. 前言 在前面的文章里简单介绍了一下字符串的相关内容,并没有涉及到更多的相关内容,这一篇将尝试讲解一下在实际开发工作中会遇到的字符串的很多操作. 1. 创建一个字符串 这部分介绍一下如何创建一个字 ...

  4. css before after用法_CSS 伪元素基础知识:content 与counter 实用技巧(二)

    在CSS 伪元素基础知识:before 与after (一),笔者已经介绍过 CSS 里的::before 和::after 这两个伪元素,以及content 相关的用法,这篇将针对content 搭 ...

  5. 硬件基础知识---电阻的用法

    硬件基础知识---电阻的用法 简介 电阻的特点是阻挡电能,电阻的关键参数有尺寸.阻值.精度和功率.电阻的应用场景非常多,都是围绕着电阻的特性来使用的.我们重点讲一下实际工作中遇到的电阻的功能,理论知识 ...

  6. db2 replace函数的用法_SQL基础知识:常用字符处理函数

    原标题:SQL基础知识:常用字符处理函数 作者:丶平凡世界

  7. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

  8. 计算机基础知识整理大全_【干货整理】高中文言文基础知识大全,速度收藏!...

    今天和大家分享的是 高中文言文基础知识大全 高中文言文基础知识大全 文言文是以古汉语文雅的口语为基础的书面形式,在远古时代文言文与平常的口语的差异微乎其微.现今文言文是中国古代的一种书面语言组成的文章 ...

  9. java基础知识点_「Java面试题/知识点精华集」20000+字的Java基础知识篇(2020最新版) !

    " 本文已经收录进我的 79K Star 的 Java 开源项目 JavaGuide:https://github.com/Snailclimb/JavaGuide (「Java学习+面试指 ...

最新文章

  1. 每天写的叫工作日志,每周写的总结叫周报,每月写的叫月报
  2. C语言菱形是怎么实现的?
  3. boost / vs2017 编译 boost 1.68.0 的过程说明
  4. 详细解读神经网络十大误解,再也不会弄错它的事情原理
  5. NFS PersistentVolume - 每天5分钟玩转 Docker 容器技术(151)
  6. 02 - 替换SetInput方法 VTK 6.0 迁移 (2013-06-30 16:22)
  7. 深入谷歌开源项目【1】 - Camer2 - 环境搭建和源码编译
  8. 让maven项目使用nexus作为远程仓库
  9. 5Python全站之路系列之MySL连表查询
  10. 高等数学(七)- 多元函数微分学(2)【多元函数极值问题】
  11. 【简报】帮助开发人员在线了解CSS Filter特性的工具 - CSS FilterLab
  12. cartographer 3D点云建图教程
  13. 新手起步:通达信怎么编写指标公式以及通达信公式的使用方法
  14. 计算机网络自顶向下第七版第二章课后答案,《计算机网络·自顶向下方法》第七版 第二章 课后习题与问题 答案...
  15. 动手学深度学习 v2 PDF版本
  16. 利用机器学习进行恶意代码分类
  17. 计算机辅助设计职业标准,计算机辅助设计绘图员国家职业标准.doc
  18. sql盲注特点_sql盲注
  19. 使用新浪微博开发者平台的第一步---注册
  20. 5、html标签中的两种关系

热门文章

  1. mysql环境变量的配置
  2. HTML5 学习总结(二)——HTML5新增属性与表单元素
  3. C# Serializable学习
  4. CSS背景颜色渐变处理
  5. mysql 交互命令 导出_MySQL数据导入导出方法与工具(2)
  6. (13)FPGA面试题阻塞赋值与非阻塞赋值
  7. (40)FPGA面试技能提升篇(OAM与SDH协议)
  8. (34)FPGA面试技能提升篇(高速SERDES)
  9. stm32 hal 串口只可以接收到一包数据数据
  10. 13004.循环数组队列(C语言)