C# using用法


一、using指令

  使用using指令在文件頂部引入命名空間,如

using System;
using System.IO;

  

二、using別名

  用using為命名空間或類型定義別名,當引入的多個命名空間包含相同名字的類型時,需要使用該類型時,可以通過using為其指定別名,使代碼更加簡潔,避免沖突,例如:

using System;
using aTest = nameSpaceA.Test;
using bTest = nameSpaceB.Test;

namespace @using
{
    class Program
    {
        static void Main(string[] args)
        {
            aTest a = new aTest();  //aTest 代替 nameSpaceA.Test
            a.fun();
            bTest b = new bTest(); //bTest 代替 nameSpaceB.Test
            b.fun();
            Console.ReadKey();
        }
    }
}

namespace nameSpaceA
{
    public class Test
    {
        public void fun()
        {
            Console.WriteLine("this is test a");
        }
    }

}

namespace nameSpaceB
{
    public class Test
    {
        public void fun()
        {
            Console.WriteLine("this is test b");
        }
    }

}

  輸出:this is test a

     this is test b

 

三、using語句

  某些類型的非托管對象有數量限制或很耗費系統資源,在代碼使用完它們后,盡可能快的釋放它們時非常重要的。using語句有助於簡化該過程並確保這些資源被適當的處置(dispose)。

它有兩種使用形式。

1:

 using (ResourceType Identifier = Expression ) Statement

 圓括號中的代碼分配資源,Statement是使用資源的代碼

 using語句會隱式產生處置該資源的代碼,其步驟為:

 a:分配資源

 b:把Statement放進tyr塊

 c:創建資源的Dispose方法的調用,並把它放進finally塊,例如:

using System;
using System.IO;

namespace @using
{
    class Program
    {
        static void Main(string[] args)
        {
            using (TextWriter tw = File.CreateText("test.txt"))
            {
                tw.Write("this is a test");
            }
           
            using (TextReader tr = File.OpenText("test.txt"))
            {
                string input;
                while ((input = tr.ReadLine()) != null)
                {
                    Console.WriteLine(input);
                }
            }
            Console.ReadKey();
        }
    }
}

輸出:this is a test

 

2:

using (Expression)  Statement

Expression 表示資源,Statement是使用資源,資源需要在using之前聲明

TextWriter tw = File.CreateText("test.txt");
using(tw){......}

這種方式雖然可以確保對資源使用結束后調用Dispose方法,但不能防止在using語句已經釋放了他的非托管資源之后使用該資源,可能導致不一致的狀態,不推薦使用

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM