<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>using</title>
	<atom:link href="https://www.aitaocui.cn/tag/230038/feed" rel="self" type="application/rss+xml" />
	<link>https://www.aitaocui.cn</link>
	<description>翡翠玉石爱好者聚集地</description>
	<lastBuildDate>Sat, 26 Nov 2022 22:28:58 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://www.aitaocui.cn/wp-content/uploads/2022/11/taocui.png</url>
	<title>using</title>
	<link>https://www.aitaocui.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>using(C# 语言中定义一个范围)</title>
		<link>https://www.aitaocui.cn/article/341799.html</link>
					<comments>https://www.aitaocui.cn/article/341799.html#respond</comments>
		
		<dc:creator><![CDATA[鲥鱼多刺]]></dc:creator>
		<pubDate>Sat, 26 Nov 2022 22:28:58 +0000</pubDate>
				<category><![CDATA[知识]]></category>
		<category><![CDATA[using]]></category>
		<guid isPermaLink="false">https://www.aitaocui.cn/?p=341799</guid>

					<description><![CDATA[using是C# 语言中定义一个范围，将在此范围之外释放一个或多个对象。 C# 语言参考 作为语句 用于定义一个范围，在此范围的末尾将释放对象 C#通过.NETFramework公...]]></description>
										<content:encoded><![CDATA[</p>
<article>
<p>using是C# 语言中定义一个范围，将在此范围之外释放一个或多个对象。</p>
</article>
<article>
<h1>C# 语言参考</h1>
<h2 id="a-bf25afb6">作为语句</h2>
<p>用于定义一个范围，在此范围的末尾将释放对象</p>
</p>
<p>C#通过.NETFramework公共语言运行库(CLR)自动释放用于存储不再需要的对象的内存。内存的释放具有不确定性；一旦CLR决定执行垃圾回收，就会释放内存。但是，通常最好尽快释放诸如文件句柄和网络连接这样的有限资源。</p>
</p>
<p>using语句允许程序员指定使用资源的对象应当何时释放资源。为using语句提供的对象必须实现IDisposable接口。此接口提供了Dispose方法，该方法将释放此对象的资源。</p>
</p>
<p>可以在到达using语句的末尾时，或者在该语句结束之前引发了异常并且控制权离开语句块时，退出using语句。</p>
</p>
<h2 id="a-672b4e08">作为指令</h2>
<p>用于为命名空间创建别名或导入其他命名空间中定义的类型</p>
</p>
<p>①.允许在命名空间中使用类型，这样，您就不必在该命名空间中限定某个类型的使用：</p>
</p>
<p>using System.Text;</p>
</p>
<p>②.为命名空间或类型创建别名。</p>
</p>
<p>using Project = PC.MyCompany.Project;</p>
</p>
<p>using 指令的范围限制为包含它的文件。</p>
</p>
<p>创建using别名，以便更易于将标识符限定到命名空间或类型。</p>
</p>
<p>创建using指令，以便在命名空间中使用类型而不必指定命名空间。using 指令不为您提供对嵌套在指定命名空间中的任何命名空间的访问。</p>
</p>
<p>命名空间分为两类：用户定义的命名空间和系统定义的命名空间。用户定义的命名空间是在代码中定义的命名空间。若要查看系统定义的命名空间的列表。</p>
</p>
<h1>深入讨论</h1>
<h2 id="a-c3088d18">引言</h2>
<p>在.NET大家庭中，有不少的关键字承担了多种角色，例如new关键字就身兼数职，除了能够创建对象，在继承体系中隐藏基类成员，还在泛型声明中约束可能用作类型参数的参数，在详细讨论using的多重身份的基础上来了解.NET在语言机制上的简便与深邃。</p>
</p>
<p>那么，using的多重身份都体现在哪些方面呢，我们先一睹为快吧：</p>
</p>
<p>· 引入命名空间</p>
</p>
<p>· 创建别名</p>
</p>
<p>· 强制资源清理</p>
</p>
<h2 id="a-962f10ac">引入命名空间</h2>
<p>using作为引入命名空间指令的用法规则为：</p>
</p>
<p>using Namespace;</p>
</p>
<p>在.NET程序中，最常见的代码莫过于在程序文件的开头引入System命名空间，其原因在于System命名空间中封装了很多最基本最常用的操作，下面的代码对我们来说最为熟悉不过：</p>
</p>
<p>using System;</p>
</p>
<p>这样，我们在程序中就可以直接使用命名空间中的类型，而不必指定详细的类型名称。using指令可以访问嵌套命名空间。</p>
</p>
<p>关于：命名空间</p>
</p>
<p>命名空间是.NET程序在逻辑上的组织结构，而并非实际的物理结构，是一种避免类名冲突的方法，用于将不同的数据类型组合划分的方式。例如，在.NET中很多的基本类型都位于System命名空间，数据操作类型位于System.Data命名空间。</p>
</p>
<h2 id="a-98d8c174">误区</h2>
<p>using类似于Java语言的import指令，都是引入命名空间（Java中称作包）这种逻辑结构；而不同于C语言中的#include指令，用于引入实际的类库，</p>
</p>
<p>using引入命名空间，并不等于编译器编译时加载该命名空间所在的程序集，程序集的加载决定于程序中对该程序集是否存在调用操作，如果代码中不存在任何调用操作则编译器将不会加载using引入命名空间所在程序集。因此，在源文件开头，引入多个命名空间，并非加载多个程序集，不会造成“过度引用”的弊端。 using为命名空间创建别名的用法规则为：</p>
</p>
<p>using alias = namespace | type;</p>
</p>
<p>其中namespace表示创建命名空间的别名；而type表示创建类型别名。例如，在.NET Office应用中，常常会引入Microsoft.Office.Interop.Word.dll程序集，在引入命名空间时为了避免繁琐的类型输入，我们通常为其创建别名如下：</p>
</p>
<p>using MSWord = Microsoft.Office.Interop.Word;</p>
</p>
<p>这样，就可以在程序中以MSWord来代替Microsoft.Office.Interop.Word前缀，如果要创建Application对象，则可以是这样，</p>
</p>
<p>private static MSWord.Application ooo = new MSWord.Application();</p>
</p>
<p>同样，也可以创建类型的别名，用法为：</p>
</p>
<p>而创建别名的另一个重要的原因在于同一cs文件中引入的不同命名空间中包括了相同名称的类型，为了避免出现名称冲突可以通过设定别名来解决。</p>
</p>
<p>以using创建别名，有效的解决了这种可能的命名冲突，尽管我们可以通过类型全名称来加以区分，但是这显然不是最佳的解决方案，using使得这一问题迎刃而解，不费丝毫功夫，同时在编码规范上看来也更加的符合编码要求。</p>
</p>
<h2 id="a-f208b5e6">结论</h2>
<p>一个简单的关键字，多种不同的应用场合。本文从比较全面的角度，诠释了using关键字在.NET中的多种用法，值得指出的是这种用法并非实现于.NET的所有高级语言，本文的情况主要局限在C#中。</p>
</article>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aitaocui.cn/article/341799.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
