1. 程式人生 > >基礎知識之 - C# Using的用法

基礎知識之 - C# Using的用法

spa 方案 image acl 決定 ogr 托管 sid 引入

C#裏面Using有兩種用法:

1.作為指令。

  • using+命名空間,導入其他命名空間中定義的類型,這樣可以在程序中直接用命名空間中的類型,不必指定命名空間;

命名空間是.NET程序在邏輯上的組織結構,而並非實際的物理結構,是一種避免類名沖突的方法,用於將不同的數據類型組合劃分的方式。

using System;

  • using + 別名 = 命名空間,為命名空間或類型創建別名。


別名的好處是:當同一個文件下引用了不同的兩個命名空間,但這兩個命名空間都包括了一個相同名字的類型時,可以用別名的形式引用,這樣可以方便使用。

以using創建別名,有效的解決了這種可能的命名沖突,盡管我們可以通過類型全名稱來加以區分,但是這顯然不是最佳的解決方案,using使得這一問題迎刃而解,不費絲毫功夫,同時在編碼規範上看來也更加的符合編碼要求。

using aClass = NameSpace1.MyClass;
using bClass = NameSpace2.MyClass;

2.作為語句。

  • 於定義一個範圍,在此範圍的末尾將釋放對象,

C# 通過 .Net Framework 公共語言運行庫(CLR)自動釋放用於存儲不再需要的對象的內存。內存的釋放具有不確定性;

一旦CLR決定執行垃圾回收,就會釋放內存。但是,通常最好盡快釋放諸如:文件句柄和網路連接這樣的有限資源。

using語句允許指定使用資源的對象應當何時釋放。為using語句提供的對象必須實現IDisposable接口。此接口提供了Dispose方法,該方法釋放對象的資源。

可以在到達 using 語句的末尾時,或者在該語句結束之前引發了異常並且控制權離開語句塊時,退出 using 語句。

using System;
class C :
IDisposable
{
    public void UseLimitedResource()
    {
        Console.WriteLine("Usinglimitedresource...");
    }
    void IDisposable.Dispose()
    {
        Console.WriteLine("Disposinglimitedresource.
"); } } class Program { static void Main() { using (C c = new C()) { c.UseLimitedResource(); } Console.WriteLine("Nowoutsideusingstatement."); Console.ReadLine(); } }

結果如下:

技術分享

  • Dispose方法用於清理對象封裝的非托管資源,而不是釋放對象的內存,對象的內存依然由垃圾回收器控制。
  • 程序在達到using語句末尾時退出using塊,而如果到達語句末尾之前引入異常則有可能提前退出。

總結:

using可以用於引入命名空間;用於別名;用於定義資源範圍。

基礎知識之 - C# Using的用法