iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0
Software Development

我要轉職成 C# / .NET 工程師系列 第 16

命名空間與別名

C#的命名空間namespace有點類似Java的Packpage,命名空間可以想像成一個模組,裡面可以包入類別、列舉、結構、或是其他命名空間。我們撰寫的.NET程式都是包裝在命名空間namespace裡面,通常建置而成.dll.exe會與命名空間同名,形成一個組件變成.NET部屬單位,當然一個組件可以包含多個命名空間namespace,同個命名空間也可以拆分成多個組件,透過參考組件後,分散在不同組件中的同一個命名空間便會自己整合。另外,在一個系統中有大量類別時,很容易發生類別名稱重複的情況,透過適當namespace命名,可以幫助我們避免類別重複的問題。

「.」 區隔

在C#程式中都靠「.」來區別使用哪個命名空間的類別的方法, 「.」有「的」的意思
命名空間.類別.方法()

using 命名空間

透過using 某個命名空間,在使用該命名空間某個類別等命名空間成員時,可以省略命名空間
https://ithelp.ithome.com.tw/upload/images/20191003/201204206vhUKUEjaw.png

巢狀命名空間

命名空間可以巢狀命名命名空間.命名空間.命名空間.類別.方法()

namespace ConsoleApp
{
    namespace Sample
    {
        namespace Test
        {
        }
    }
}

另外也可以用逗點來分隔,以上撰寫方式與以下方式都屬同一個命名空間

namespace ConsoleApp.Sample.Test
{
    
}

https://ithelp.ithome.com.tw/upload/images/20191002/20120420FSyK1mMk4n.png

巢狀命名空間不能與類別同名

因為C#是靠「.」區隔,使用上當命名空間發生與類別同名是不允許的。
命名空間.命名空間
命名空間.類別
https://ithelp.ithome.com.tw/upload/images/20191002/20120420iesrNyegzZ.png

別名alias

我們在使用using來載入組件時,using只能載入命名空間,不能using到命名空間的類別,但是我們可以透過using,幫某個命名空間的某個類別取別名
例如:

using cs = System.Console;
namespace ConsoleAppTest
{
    class Program
    {
        static void Main(string[] args)
        {           
                cs.WriteLine(a);            
        }        
    }
}

https://ithelp.ithome.com.tw/upload/images/20191003/20120420iBXlQ3lKBY.png

而我們C#所用的變數int或byte等,其實就是System.Int32與System.Byte的別名

關於using

using有三個使用方式

  1. using 載入組件
  2. using 建立別名
  3. using (載入類別)編譯器自動建立try{}finally{}

上一篇
因為這個設計模式,終於讓我看懂static要怎麼用
下一篇
實值型別與參考型別
系列文
我要轉職成 C# / .NET 工程師34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言