广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#using()的使用方法
  • 516
分享到

C#using()的使用方法

C#using() 2023-02-21 12:02:45 516人浏览 泡泡鱼
摘要

目录01.点明观点 02.C#中,using的两个作用 03.using如何实现资源释放 04.实践探索05.总结 01.点明观点 

01.点明观点 

C#中,非托管资源使用之后必须释放,而using()是使用非托管资源的最佳方式,可以确保资源在代码块结束之后被正确释放,并且代码更简洁。

这里说的非托管资源指的是实现IDisposable或IAsyncDisposable接口的类。

using是如何实现资源释放?本文将予以解答。

02.C#中,using的两个作用 

第一种:引入命名空间

用法如下:

using System.Text;
using s = System.Text;       //为命名空间定义别名
using static System.Math;    //引入类型静态成员
global using System.Math;    //全局引入

第二种:声明一个对象,并确保该对象在代码块执行完之后被释放(Dispose())。

这里主要对第二种用法进行分析。

03.using如何实现资源释放 

通常,我们以下面的形式声明一个非托管资源,当代码块执行完之后,资源会自动释放,那程序是如何做到的呢?

using (var file = File.Open("filePath", FileMode.OpenOrCreate))
{
    //do something
}

说起来也简单:

using(...)语句经编译器编译之后,转换了try{...}finally{...}

上面的代码,经程序编译后的代码如下:

FileStream file = File.Open("filePath", FileMode.OpenOrCreate);
try
{
  //do something
}
finally
{
  if (file!= null)
  {
    ((IDisposable)file).Dispose();
  }
}

两段代码的运行结果是一样的,对比之下,很明显,使用using()的代码更简洁。

04.实践探索

实践出真知,我们通过一个例子,使用反编译工具(ILSpy或ILDasm)查看生成的DLL,进行验证。

首先,定义一个实现了IDisposable接口的类。当然也可以使用.net中内置的类,这里采用自定义类是为了验证,只要是实现了IDisposable接口的类,都可以使用这种方式。

然后,使用using创建资源对象。

最后,查看编译后生成的IL代码文件,可以看到确实如上面所说,using(...)语句经编译器编译之后,转换了try{...}finally{...},并且在finally{}中完成了对Dispose()方法的调用。 

至此,using()如何完成对非托管资源的释放,就很清楚了。

05.总结 

using()语句编译后生成 try{...} finally{...} 语句,进而确保资源释放。

using()是程序中使用非托管资源的最佳方式。

using()的本质是C#中的语法糖。

糖让人快乐,同样语法糖也能让编程变得快乐,类似using()的语法糖,可以简化代码,确保必要逻辑的正确执行;糖只是调味剂,同样语法糖也只是简化编码,核心业务逻辑,还需要开发人员完成。

using的用法很简单,在合适的场景下正确使用,可以让开发工作事半功倍。

到此这篇关于C# using()的使用方法的文章就介绍到这了,更多相关C# using()内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C#using()的使用方法

本文链接: https://www.lsjlt.com/news/196921.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#using()的使用方法
    目录01.点明观点 02.C#中,using的两个作用 03.using如何实现资源释放 04.实践探索05.总结 01.点明观点 ...
    99+
    2023-02-21
    C# using()
  • C#中using word的使用方法
    这篇文章主要介绍“C#中using word的使用方法”,在日常操作中,相信很多人在C#中using word的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中using word的使用方法”的疑...
    99+
    2023-06-17
  • C++11中使用using的方法
    在 C++ 中 using 用于声明命名空间,使用命名空间也可以防止命名冲突。在程序中声明了命名空间之后,就可以直接使用命名空间中的定义的类了。在 C++11 中赋予了 using ...
    99+
    2022-11-12
  • C#中using关键字的使用方法示例
    目录1 :using 指令(命名空间)2 :using 语句(1 ):using (ResourceType Identifier = Expression ) State...
    99+
    2022-11-13
  • C#中using语句的用法
    一、using语句 using可以算是.NET中新的语法元素,它清楚地说明一个通常比较占用资源的对象何时开始使用和何时被手动释放。当using可以被使用时,建议尽量使用using语句...
    99+
    2022-11-13
  • C# using()如何使用
    这篇文章主要介绍“C# using()如何使用”,在日常操作中,相信很多人在C# using()如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# using()如何使用...
    99+
    2023-07-05
  • C#中如何使用using
    C#中如何使用using,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、using 按照MSDN的解释  using 语句定义一个范围,在此范围的末尾将处...
    99+
    2023-06-17
  • C#中using如何使用
    这篇文章给大家介绍C#中using如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C# using指令,最常用的是在程序代码的开头引用系统空间,其他的用法有允许在命名空间中使用类型和用来创建 using语句定义一...
    99+
    2023-06-17
  • C++的using声明和using编译指令怎么使用
    这篇文章主要介绍“C++的using声明和using编译指令怎么使用”,在日常操作中,相信很多人在C++的using声明和using编译指令怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++的usi...
    99+
    2023-06-22
  • C#using的本质及使用详解
    目录01.点明观点02.C#中,using的两个作用03.using如何实现资源释放04.实践探索05.总结01.点明观点 C#中,非托管资源使用之后必须释放,而using()是使用...
    99+
    2022-11-13
  • C#中的using怎么用
    这篇文章主要讲解了“C#中的using怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#中的using怎么用”吧!using的用法:1. using指令:引入命名空间这是最常见的用法,...
    99+
    2023-06-17
  • C#中using指令如何使用
    C#中using指令如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指...
    99+
    2023-06-17
  • C# 中using的作用是什么
    本篇文章为大家展示了C# 中using的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C# using作用,微软MSDN上解释总共有三种用途:引用命名空间。2、为命名空间或类型创建别名。3...
    99+
    2023-06-17
  • C#的using关键字怎么用
    这篇文章主要讲解了“C#的using关键字怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#的using关键字怎么用”吧!using 关键字using 关键字表明程...
    99+
    2023-06-17
  • 你不知道的C++中namespace和using的用法实例
    目录引言一: 冒号作用域二、名字控制1 命令空间2 命令空间的使用 三、 using的指令1 using的声明2 using的编译指令总结引言 你是不是只认为na...
    99+
    2022-12-19
    c++ namespace 用法 c++中的using namespace c++ using namespace
  • C#的using关键字有什么用
    这篇文章主要讲解了“C#的using关键字有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#的using关键字有什么用”吧!在任何 C# 程序中的第一条语句都是:using ...
    99+
    2023-06-17
  • C# interface的使用方法
    本篇内容介绍了“C# interface的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C# interface使用有什么优点呢?首...
    99+
    2023-06-17
  • C++栈的使用方法
    本篇内容介绍了“C++栈的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!想要充分的掌握C++栈技术,那么就要对C++中的结构、语句、...
    99+
    2023-06-17
  • C++ decltype的使用方法
    这篇文章主要介绍“C++ decltype的使用方法”,在日常操作中,相信很多人在C++ decltype的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++ decltype的使用方法”的疑惑有所...
    99+
    2023-06-20
  • c++中的bind使用方法
    除了容器有适配器之外,其实函数也提供了适配器,适配器的特点就是将一个类型改装成为拥有子集功能的新的类型。其中函数的适配器典型的就是通过std::bind来实现。 std::bind函...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作