Home [C# 筆記] Using 作用
Post
Cancel

[C# 筆記] Using 作用

using作用:

  1. using 指令:引入命名空間
  2. using static 指令:無需指定類型名稱即可存取其靜態成員
  3. using 建立别名
  4. using 語句:將實體與程式碼綁定,結束後自動Dispose,釋放實體資源。(與資料庫互動時常用到)

1. using 指令:引入命名空間

using 用於引入命名空間,以便在程式碼中使用其中定義的類型而不需要使用完全限定的類型名稱。 (不用寫出完整全名)

1
2
using System;
Console.WriteLine("Hello, World!");

2. using static 指令:無需指定類型名稱即可存取其靜態成員

using static 指令:無需指定類型名稱即可存取其靜態成員

1
2
using static System.Console;
WriteLine("Hi");

可以存取類型的靜態成員,而不需以類型名稱限定存取:

1
2
3
4
5
6
7
8
9
using static System.Console;
using static System.Math;
class Program
{
    static void Main()
    {
        WriteLine(Sqrt(3*3 + 4*4));
    }
}

3. using 建立别名

using 也可以用於為類型或命名空間建立別名,以解決命名衝突或簡化類型名稱的使用。

1
using Project = PC.MyCompany.Project;

為巢狀命名空間起別名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 寫法一:
using Test = N1.N2 //為巢狀命名空間 起別名
Test.C1 c = new(); //使用別名宣告物件

// 寫法一:
using Test = N1.N2.C1 //為巢狀命名空間.類別 起別名
Test t = new(); //使用別名宣告物件

//巢狀命名空間
namespace N1 {
    namespace N2 {
        class C1 { }
    }
}

4. 使用 using { } 來釋放資源

using 語句:將實體與程式碼綁定,結束後自動Dispose,釋放實體資源。(與資料庫互動時常用到)

資源管理(IDisposable 介面)

1
2
3
4
5
6
// using 語句也用於資源管理,特別是實作了 IDisposable 介面的類型。
// 在 using 區塊中建立的物件會在區塊結束時自動呼叫 Dispose 方法,以確保資源被正確釋放。
using (MyDisposableObject myObject = new MyDisposableObject())
{
    // 使用 myObject
} // 在這裡,myObject 的 Dispose 方法被調用

範例

using 加上一對大括弧{ }來明確限定物件的存活範圍:

1
2
3
4
using (var reader = new StreamReader("app.config"))
{
    ... // 在此區塊內皆可使用 reader 物件
}

一旦程式離開了 using 區塊reader 就會被自動釋放(自動呼叫其 Dispose 方法)。

或是使用 單行 using 宣告的語法

1
using var reader = new StreamReader("app.config");

那麼,如果使用了單行 using 宣告的語法,reader 物件又是何時釋放呢?
答案是:在它所屬的區塊結束時。

請看以下範例:

1
2
3
4
5
if (File.Exists("app.config"))
{
    using var reader = new StreamReader("app.config");
    Console.WriteLine(reader.ReadToEnd());
}

當程式離開 if 區塊時,reader 便會自動釋放。

MSDN - using 指示詞
CSDN - C#【中级篇】C# 命名空间(Namespace)
[C# 筆記] using 關鍵字的作用 by R
[C# 筆記] 使用 using 來釋放資源 by R

This post is licensed under CC BY 4.0 by the author.

[C# 筆記] 命名空間(Namespace)

[C# 筆記] static靜態成員 & 實體成員