iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
自我挑戰組

C# 和 SQL 探索之路系列 第 5

Day 5: C# 關鍵字: var 和 dynamic

  • 分享至 

  • xImage
  •  

大家好,今天是第 5 天,會介紹 vardynamic 的不同。本來預期一天會講 2 ~ 3 個不同類型的關鍵字,實際寫了才發現,其實一個關鍵字就有很多用法和背後觀念可以說 ~

在 C# 當中,一般在宣告變數時,都要指定型別,例如基本的 int 或是類別名稱 (如 StringBuilder),可是 vardynamic 能夠在宣告時不指定型別,如下是常見的用法。

Dictionary<int, string> books = new Dictionary<int, string>();
books.Add(1,"C# Tutorial");
books.Add(2,"Python 1-2-3");
books.Add(3,"The Basic of C++");
        
foreach(var pair in books){
// foreach(KeyValuePair<int, string> pair in books){ // 效果與 var 相同
Console.WriteLine("索引: " + pair.Key + ", 書名: " + pair.Value);    
}

除了可以省略掉長長的類別名稱,使程式碼更簡潔,另外就是可以方便的接收 LINQ 的執行結果,使開發更加的便利且具備彈性。

public class Computer{
    public void TurnOn(){
        Console.WriteLine("電腦運行中 ...");    
    }
}
    
public class Tablet{
    public void TurnOn(){
        Console.WriteLine("平板電腦已啟動");    
    }
}
    
public static void Main()
{
    dynamic pc1 = new Computer();
    pc1.TurnOn();
    dynamic tab1 = new Tablet();
    tab1.TurnOn();
}

dynamic 則是執行時才知道變數的類型,因此不同類別的物件有相同的方法、屬性時,可以用相同名字呼叫或使用,缺點則是沒辦法在編譯前先知道型別的錯誤。時常被用在動態載入的類別上。

vardynamic 的差別是,var 是編譯時會帶入型態 (如 string),實際上執行時和直接指定型別是相同的;而 dynamic 是執行時被指定數值後才決定其型態。

參考資料:


上一篇
Day 4: C# 關鍵字: ?
下一篇
Day 6: C# 關鍵字: $
系列文
C# 和 SQL 探索之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言