C#中using关键字的使用方法示例
作者:camellia 发布时间:2023-07-30 14:17:02
标签:c#,using,关键字
这里记录下C#中using关键字的使用方法。
Using的使用大致分别以下三种:
1 :using 指令(命名空间)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
2 :using 语句
某些类型的非托管对象有数量限制或很耗费系统资源,在代码使用完它们后,尽可能快的释放它们时非常重要的。using语句有助于简化该过程并确保这些资源被适当的处置(dispose)。
这里大致分为两种形式。
(1 ):using (ResourceType Identifier = Expression ) Statement
Using表达式
圆括号中的代码分配资源,Statement是使用资源的代码
using语句会隐式产生处置该资源的代码,其步骤为:
a:分配资源
b:把Statement放进try块
c:创建资源的Dispose方法的调用,并把它放进finally块
// using 语句
using (usings.factory fac = new usings.factory())
{
fac.CreateProduct();
}
(2 ):using (Expression) Statement
Using对象
Expression 表示资源,Statement是使用资源,资源需要在using之前声明
usings.factory facs = new usings.factory();
// using 对象
using (facs)
{
facs.CreateProduct();
}
Factory类:
namespace usings
{
public class factory : IDisposable
{
public void CreateProduct()
{
Console.WriteLine("创建了一个产品!");
}
public void Dispose()
{
Console.WriteLine("该对象销毁~");
}
}
}
这里需要说我遇到的一个小问题,如图所示:
解决方法很简单,自定义的类继承IDisposable类,实现其Dispose方法。
具体如我上边的代码所示。
3 :using 别名
用using为命名空间或类型定义别名,当引入的多个命名空间包含相同名字的类型时,需要使用该类型时,可以通过using为其指定别名,使代码更加简洁,避免冲突。
这里放上这次测试使用的全部代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// 别名
using afactory = usings.usingsaaa.factory;
using bfactory = usings.usingsbbb.factory;
namespace usings
{
class Program
{
static void Main(string[] args)
{
// using 语句
using (usings.factory fac = new usings.factory())
{
fac.CreateProduct();
}
Console.WriteLine("------------------------------------------");
usings.factory facs = new usings.factory();
// using 对象
using (facs)
{
facs.CreateProduct();
}
Console.WriteLine("------------------------------------------");
// 别名
afactory a = new afactory(); // 代替usingsaaa.factory
a.CreateProduct();
Console.WriteLine("------------------------------------------");
bfactory b = new bfactory(); // 代替usingsbbb.factory
b.CreateProduct();
Console.ReadKey();
}
}
namespace usingsaaa
{
public class factory
{
public void CreateProduct()
{
Console.WriteLine("aaa工厂创建了一个产品!");
}
}
}
namespace usingsbbb
{
public class factory
{
public void CreateProduct()
{
Console.WriteLine("bbb工厂创建了一个产品!");
}
}
}
namespace usings
{
public class factory : IDisposable
{
public void CreateProduct()
{
Console.WriteLine("创建了一个产品!");
}
public void Dispose()
{
Console.WriteLine("该对象销毁~");
}
}
}
}
来源:https://juejin.cn/post/7110889488628318245


猜你喜欢
- 在Android中图片的自动切换不仅可以实现自动切换,而且还可以使用手动切换。而且一般在切换的时候,在图片下方还带有其他内容的切换,用来标记
- 本文实例为大家分享了Android App自动更新通知栏下载的具体代码,供大家参考,具体内容如下版本更新说明这里有调用UpdateServi
- 查询文档 & 基本操作为了方便学习, 本节中所有示例沿用上节的索引按照ID单个GET class_1/_doc/1查询结果:{ &n
- 概述Spring Boot简化了Spring应用的开发过程,遵循约定优先配置的原则提供了各类开箱即用(out-of-the-box)的框架配
- 一、前言大家好,我是一个初学C语言的小菜狗,是否大家在平时的做题中会遇到和我一样的烦恼,题目的代码已经基本完成,但是在输出时候,总是和题目给
- Spring Security 过滤器链及自定义Filter别名类名称Namespace Element or AttributeCHANN
- JetBrainsMono 是 JetBrains 公司开发的一款开源字体,可免费商用。正如其名字带的Mono,即Monospaced Fo
- windows系统中的画板工具,有好几种画刷,C#中并没有直接对应可使用的类,只能自己研究。1.画刷原理根据本人对PS的相关功能细心分析,发
- 开发环境: IDEA 2022.1.41. 概述虽然webservice这块使用很少,但在局域网作服务还是相当不错。今天突生想法,想做一个来
- 前言:Zygote 是 Android 的核心,每打开一个 app,Zygote 就会 fork 一个虚拟机实例来运行 app,基于Xpos
- 本文以一个简单的实例来说明C#策略模式的实现方法,分享给大家供大家参考。具体实现方法如下:一般来说,当一个动作有多种实现方法,在实际使用时,
- 本文实例为大家分享了C#使用NPOI将excel导入到list的具体代码,供大家参考,具体内容如下这个是确定是实体类接收/// <su
- 本文介绍了Maven构建自己的第一个Java后台的方法,分享给大家,具体如下:1.知识后顾关于如何运用Maven构建自己的第一个项目,上期我
- 前文传送门:NioEventLoop处理IO事件执行任务队列继续回到NioEventLoop的run()方法:protected void
- 本文实例为大家分享了RecylerView实现流布局的具体代码,供大家参考,具体内容如下第一步:添加依赖compile 'com.a
- 环境:VS2019+Qt5.121. CLR库安装 &nb
- try catch finally组合:检测异常,并传递给catch处理,并在finally中进行资源释放。try catch组合 : 对代
- 一、概述:System.Collections.Concurrent 命名空间提供多个线程安全集合类。当有多个线程并发访问集合时,应使用这些
- 本文实例讲述了Java爬取豆瓣电影数据的方法。分享给大家供大家参考,具体如下:所用到的技术有Jsoup,HttpClient。Jsoupjs
- 一、什么是稀疏数组当一个数组a中大部分元素为0,或者为同一个值,那么可以用稀疏数组b来保存数组a。首先,稀疏数组是一个数组,然后以一种特定的