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
0
投稿
猜你喜欢
- java 多线程的几种实现方法总结1.多线程有几种实现方法?同步有几种实现方法?多线程有两种实现方法,分别是继承Thread类与实现Runn
- 前言本文主要讲述如何使用Java + FFmpeg实现对视频文件的信息提取、码率压缩、分辨率转换等功能;之前在网上浏览了一大圈Java使用F
- Stream简化元素计算一、接口设计从Java1.8开始提出了Stream流的概念,侧重对于源数据计算能力的封装,并且支持序列与并行两种操作
- 由C#转入Java一段时间了,总结下个人认为的Java同C#语法之间的不同之处,有不同意见之处还望各位海涵 刚学Java时觉得语法同C#大致
- 通过JDK的Proxy代理实现对业务类做简单的AOP实现接口:UserService 包含的方法为切入点,会被代理拦截类:UserServi
- Nacos简介Nacos 英文全称为 Dynamic Naming and Configuration Service,是一个由阿里巴巴团队
- 引言MyBatis-Plus | 最优雅最简洁地完成数据库操作是对MyBatis-Plus的功能进行简单介绍,虽然是介绍,也让我们领略到他的
- 使用类的全权名: System.Text.StringBuilder sb = new System.Text.StringBuilder(
- 引言 批量下载思路,首先前端发送下载请求,携带必要参数,
- HashMap的原理 HashMap的数据结构为数组+链表,以key,value的形式存值,通过调用put与get方法来存值与取值。它内部维
- 文章主要涉及到以下几个问题:怎么实现Java的序列化为什么实现了java.io.Serializable接口才能被序列化transient的
- 循环依赖定义循环依赖就 循环引用,就是两个或多个 bean 相互之间的持有对方,比如 CircleA 引用 CircleB , Circle
- 又忙了一周,事情差不多解决了,终于有可以继续写我的博客了(各位看官久等了)。这次我们来谈一谈Java里的一个很有意思的东西——回调。什么叫回
- HttpServletResponse.sendRedirect与RequestDispatcher.forward方法都可以实
- 简介过滤器是AOP(面向切面编程)思想的具体实现。可以过滤浏览器发出的请求,并且决定放行请求还是中断请求。在浏览器对服务器发起请求或者服务器
- 定义强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器宁愿抛出OOM(OutOfMemoryError)也不会回收它。说明不要被
- 一、Drools引擎简介1、基础简介Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形
- //哈弗曼编码的实现类public class HffmanCoding { private int c
- 1.springBoot的依赖确定项目中包含可以注解的依赖<dependency> <group
- The java.io.Writer.flush() method flushes the stream. If the stream ha