国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

using

2019-11-17 02:31:23
字體:
來源:轉載
供稿:網友

using

using關鍵字有兩個主要用途:

  • 作為指令,為命名空間創建別名或導入其他命名空間中的類型。
  • 作為語句,定義一個范圍,在此范圍的末尾將釋放對象。

using指令

using指令有兩個用途:

  • 導入其他命名空間中的類型:
  • using System.Text;
  • 為命名空間或類型創建別名:
  • using PRoject = PC.MyCompany.Project;

using指令的特點:

  • using指令的作用范圍限制為包含它的文件,在其他文件中的using指令,對現有文件無效。
  • using別名,用于方便講標識符限定到命名空間或類型。using別名指令的右側必須是一個完全限定類型。且與前面的using指令無關。
  • using指令,便于在命名空間中使用而類型,而不必指定命名空間。
  • using指令不提供對嵌套在指定命名空間中的任何命名空間的訪問。

示例1

下面的示例演示如何為命名空間定義和使用using別名

namespace PC{    // Define an alias for the nested namespace.    using Project = PC.MyCompany.Project;    class A    {        void M()        {            // Use the alias            Project.MyClass mc = new Project.MyClass();        }    }    namespace MyCompany    {        namespace Project        {            public class MyClass { }        }    }}
using別名指令的右側不能由開放的泛型類型。例如,不能是List<T>,但可以為List<int>創建別名。

示例2

下面演示如何為類定義using指令和using別名:

using System;// Using alias directive for a class.using AliasToMyClass = NameSpace1.MyClass;// Using alias directive for a generic class.using UsingAlias = NameSpace2.MyClass<int>;namespace NameSpace1{    public class MyClass    {        public override string ToString()        {            return "You are in NameSpace1.MyClass.";        }    }}namespace NameSpace2{    class MyClass<T>    {        public override string ToString()        {            return "You are in NameSpace2.MyClass.";        }    }}namespace NameSpace3{    // Using directive:    using NameSpace1;    // Using directive:    using NameSpace2;    class MainClass    {        static void Main()        {            AliasToMyClass instance1 = new AliasToMyClass();            Console.WriteLine(instance1);            UsingAlias instance2 = new UsingAlias();            Console.WriteLine(instance2);        }    }}// Output: //    You are in NameSpace1.MyClass.//    You are in NameSpace2.MyClass.

using語句

便于正確使用IDisposable對象。

示例

下面演示如何使用using語句。

using (Font font1 = new Font("Arial", 10.0f)) {    byte charset = font1.GdiCharSet;}

File和Font是訪問非托管資源的托管類型的示例。還有許多其他類型的非托管資源和對應封裝這些資源的類庫。所有這些類型都必須實現IDisposable接口。

當使用IDisposable對象時,應該在using語句中聲明和實例化此對象。using語句能自動調用對象的Dispose方法,在調用Dispose時對象離開其作用域。在using塊中,對象時只讀,不能修飾也不能重新賦值。

using語句確保Dispose方法的調用,即使發生了異常。也可以將對象放在try塊中并在finally塊中調用Dispose來達到同樣的效果,實際上,編譯器就是將using語句轉換為這種形式。上面的代碼在編譯時會擴展為下面形式:

{  Font font1 = new Font("Arial", 10.0f);  try  {    byte charset = font1.GdiCharSet;  }  finally  {    if (font1 != null)      ((IDisposable)font1).Dispose();  }}

如下所示,可以在using語句中聲明一個類型的多個實例。

using (Font font3 = new Font("Arial", 10.0f),            font4 = new Font("Arial", 10.0f)){    // Use font3 and font4.}

也可以實例化資源對象之后,將變量傳遞給using語句。不過這不是最佳做法。在這種情況下,該對象在控制權離開using語句之后還可見,但它可能不再具有對非托管資源的訪問權,如果嘗試在using塊外部使用該對象,就可能引發異常。所以最好在using語句中實例化該對象并將其作用域限制在using塊中。

Font font2 = new Font("Arial", 10.0f);using (font2) // not recommended{    // use font2}// font2 is still in scope// but the method call throws an exceptionfloat f = font2.GetHeight();

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大城县| 隆安县| 庐江县| 荔浦县| 承德县| 涪陵区| 西峡县| 郎溪县| 铅山县| 柳林县| 保靖县| 南和县| 临夏县| 肇州县| 阳曲县| 新龙县| 呼和浩特市| 桐城市| 河东区| 仁寿县| 开封县| 和顺县| 新闻| 台山市| 武鸣县| 乌鲁木齐市| 周至县| 都兰县| 云林县| 赫章县| 平原县| 玉山县| 岫岩| 洪雅县| 卢湾区| 比如县| 广德县| 灵宝市| 和政县| 泰安市| 东乌珠穆沁旗|