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("该对象销毁~");}}
}

这里需要说我遇到的一个小问题,如图所示:

34343434.png

解决方法很简单,自定义的类继承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.factorya.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("该对象销毁~");}}}
}

以上就是对using关键字的一些总结。

有好的建议,请在下方输入你的评论。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【stable diffusion】保姆级入门课程03-Stable diffusion(SD)图生图-涂鸦(绘图)的用法

目录 0.本章素材 1.涂鸦有什么用 2.涂鸦的使用场景是什么 3.操作面板 4.提示词与涂鸦 5.涂鸦与重绘幅度 6.涂鸦的其他用法(自由创作) 7.课后训练 0.本章素材 Realistic Vision V3.0模型(真实系模型)百度网盘链接:https://pan.baidu.com/s/1HkSKW2t4L6wMg…

HJ106 字符逆序

描述 将一个字符串str的内容颠倒过来,并输出。 数据范围:1≤len(str)≤10000 1≤len(str)≤10000 输入描述: 输入一个字符串,可以有空格 输出描述: 输出逆序的字符串 示例1 输入: I am a student…

python redis 连接池 和 消息 订阅发布

python redis 连接池 和 消息 订阅发布 redis 发布订阅(PubSub),深入解读 https://blog.csdn.net/ldw201510803006/article/details/126093445 def connectredis(self):try:#redis的连接池#rs StrictRedis(hostself.host, port6379, db2 )r…

Day52: 84.柱状图中最大的矩形

84.柱状图中最大的矩形 84. 柱状图中最大的矩形 - 力扣(LeetCode) 思路 本题是要找每个柱子左右两边第一个小于该柱子的柱子,所以从栈头(元素从栈头弹出)到栈底的顺序是从大到小的顺序。例: 三种情况&a…

uniapp:拖拽容器movable-view,层级问题解决

代码 <template><view class"index"><view click"toast">页面内容事件触发</view><movable-area class"movableArea"><movable-view :x"x" :y"y" direction"all" change"m…

Kubernetes 使用 helm 部署 NFS Provisioner

文章目录 1. 介绍2. 预备条件3. 部署 nfs4. 部署 NFS subdir external provisioner4.1 集群配置 containerd 代理4.2 配置代理堡垒机通过 kubeconfig 部署 部署 MinIO添加仓库修改可配置项 访问nodepotingress 1. 介绍 NFS subdir external provisioner 使用现有且已配置的NFS…

百度智能汽车负责人储瑞松离职,智驾重心转向ANP3

作者 | 王博 HiEV从多个信息源获悉&#xff0c;百度集团副总裁、百度智能汽车事业部总经理储瑞松将从百度离职。一位知情人士透露&#xff0c;储瑞松「即将启程&#xff0c;返回美国」。 继百度Apollo技术骨干郭阳离职后&#xff0c;储瑞松的变动&#xff0c;更加直白地反映出百…

【贪心算法part05】| 435.无重叠区间、763.划分字母区间、56.合并区间

目录 &#x1f388;LeetCode435. 无重叠区间 &#x1f388;LeetCode763.划分字母区间 &#x1f388;LeetCode 56.合并区间 &#x1f388;LeetCode435. 无重叠区间 链接&#xff1a;435.无重叠区间 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, …

Hive内部表和外部表的区别

未被 external修饰的是内部表 被 external修饰的为外部表。 区别&#xff1a; 内部表数据由 Hive自身管理&#xff1b; 外部表数据由 HDFS管理&#xff1b; 内部表数据存储的位置是 hive.metastore.warehouse.dir&#xff08;默认&#xff1a;/user/hive/warehouse&#xf…

数据仓库设计理论

数据仓库设计理论 一、数据仓库基本概念 1.1、数据仓库介绍 数据仓库是一个用于集成、存储和分析大量结构化和非结构化数据的中心化数据存储系统。它旨在支持企业的决策制定和业务分析活动。 1.2、基本特征 主题导向&#xff1a;数据仓库围绕特定的主题或业务领域进行建模…

使用Nacos将单体服务注册成微服务的步骤以及相关问题解决

目录 1.改造单体服务的配置文件。 2.添加Nacosw相关的pom依赖 3.在nacos的配置列表中创建配置列表 4.相关问题的解决 1.改造单体服务的配置文件。 &#x1f516;创建一个bootstrap.yml的配置文件该文件通常放置在src/main/resources目录中&#xff0c;并且优先于applicati…

为Qemu aarch32开发板添加sd卡

Qemu: 2.8.0 开发板&#xff1a; vexpress 1、制作sd卡镜像 dd if/dev/zero offs_vexpress_1G.img bs1M count 2、分区 sudo losetup /dev/loop0 fs_vexpress_1G.imgsudo fdisk /dev/loop0 注&#xff1a;可以使用 losetup -a 查看当前loop设备的占用情况 下面是分的两个…

Spring:xml 配置

Bean 配置xml 配置反射模式工厂方法模式Factory Bean 模式配置 在 Spring 中,配置 bean 实例一般使用 xml 配置方式或注解(Annontation) 方式进行配置。 xml 配置 在 xml 配置中分为三种方式,分别为反射模式、工厂方法模式和 Factory Bean 模式。 反射模式:指通过指定 …

C++类与对象(上部曲)

目录 面向过程和面向对象初步认识 类的引入 类的定义 类的两种定义方式&#xff1a; 1. 声明和定义全部放在类体中 2. 类声明放在.h文件中&#xff0c;成员函数定义放在.cpp文件中 类的访问限定符及封装 1 访问限定符 2 封装 类的实例化 类对象的存储方式 this指针 …

已解决-使用Adobe Acrobat去除PDF水印

这个方法只能去带颜色的水印&#xff0c;灰色的去不了&#xff0c;等我有空时候&#xff0c;再写一篇使用PS去除水印的方法&#xff0c;也非常简单。敬请期待 安装软件 网上下载安装Adobe Acrobat Pro DC 安装Adobe PDF打印机 点击“添加打印机” 选择“我的打印机未列出”…

Hadoop——HDFS的Java API操作(文件上传、下载、删除等)

1、创建Maven项目 2、修改pom.xml文件 <dependencies><!-- Hadoop所需依赖包 --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.0</version></dependency&…

【C++】引用

1.引用的基本语法 2.引用注意事项 int &b&#xff1b;//错误 int &ba&#xff1b;//正确 3.引用做函数参数 int temp a&#xff1b; ab&#xff1b; btemp&#xff1b; 4.引用做函数返回值 出现问题&#xff1a; https://www.bilibili.com/video/BV1et411b73Z?p…

【计算机网络】网络基础

文章目录 1. 网络的发展2. 认识网络协议2.1 协议栈在所有操作系统中是统一的2.2 协议分层2.3 协议各层的功能2.4 协议分层的好处 3. 具体的网络协议栈3.1 OSI七层模型3.2 TCP/IP五层模型 4. 网络通信基本流程4.1 同局域网的两台主机通信4.2 跨局域网的两台主机通信 5. 网络中的…

JMeter的使用(2)

JMeter生成测试报告使用的是Ant(Maven)构建工具来生成HTML的测试报告。 ant执行的条件是需要有build.xml的文件的&#xff0c;build.xml文件里面主要编写三个内容&#xff1a; 1、定义了被执行的测试脚本 2、定义了测试报告的目录 3、定义了自动发送邮件 HTTP COOKIE管理器&am…

Spring详解(学习总结)

目录 一、Spring概述 &#xff08;一&#xff09;、Spring是什么&#xff1f; &#xff08;二&#xff09;、Spring框架发展历程 &#xff08;三&#xff09;、Spring框架的优势 &#xff08;四&#xff09;、Spring的体系结构 二、程序耦合与解耦合 &#xff08;一&…