首頁  >  文章  >  後端開發  >  C#中var和dynamic之間的區別是什麼?

C#中var和dynamic之間的區別是什麼?

青灯夜游
青灯夜游原創
2019-04-17 11:46:415081瀏覽

在C#中,關鍵字var和dynamic都可以申明動態類型的變量,有時會比較容易被混淆,但本質上還是有不同之處的。下面這篇文章就來跟大家介紹C#中關鍵字var和dynamic的差別,希望對大家有幫助。 【影片教學推薦:C#教學

C#中var和dynamic之間的區別是什麼?

#C# var關鍵字

##C# var關鍵字

var 是3.5新出的一個定義變數的類型:隱式類型;它可用來定義隱式類型的局部變量,VAR可取代任何類型。

隱式類型變數是在未明確指定資料類型的情況下宣告的變數。在隱式類型變數中,編譯器在編譯時會從用於初始化變數的值自動推導出變數的類型。隱式類型變數概念是在C#3.0中引入的。隱式類型變數不是為了取代普通變數宣告而設計的,它旨在處理一些特殊情況,如LINQ(語言整合查詢)。 範例:

using System; 
  
class A{ 
  
    // Main方法
    static public void Main() 
    { 
  
        // 使用var关键字创建和初始化隐式类型变量
        var a = 'f'; 
        var b = "php"; 
        var c = 30.67d; 
        var d = false; 
        var e = 54544; 
  
        // 输出类型 
        Console.WriteLine("'a'的类型是: {0} ", a.GetType()); 
  
        Console.WriteLine("'b'的类型是: {0} ", b.GetType()); 
  
        Console.WriteLine("'c'的类型是: {0} ", c.GetType()); 
  
        Console.WriteLine("'d'的类型是: {0} ", d.GetType()); 
  
        Console.WriteLine("'e'的类型是: {0} ", e.GetType()); 
    } 
}

輸出:

'a'的类型是: System.Char 
'b'的类型是: System.String 
'c'的类型是: System.Double 
'd'的类型是: System.Boolean 
'e'的类型是: System.Int32

C# dynamic關鍵字

dynamic是4.0新出的一個定義變數的類型:動態類型;它用於避免編譯時類型檢查。編譯器在編譯時不檢查動態類型變數的類型,相反,編譯器在執行時取得類型。動態類型變數是使用動態關鍵字建立的。 範例:

using System; 
  
class A { 
  
    // Main方法
    static public void Main() 
    { 
  
        // 使用dynamic关键字创建和初始化隐式类型变量
dynamic val1 = 'a'; 
        dynamic val2 = "hello"; 
        dynamic val3 = 3234; 
        dynamic val4 = 32.55; 
        dynamic val5 = true; 
  
        // 输出类型 
Console.WriteLine("val1的实际类型是:{0}", val1.GetType().ToString()); 
  
        Console.WriteLine("val2的实际类型是:{0}", val2.GetType().ToString()); 
  
        Console.WriteLine("val3的实际类型是:{0}", val3.GetType().ToString()); 
  
        Console.WriteLine("val4的实际类型是:{0}", val4.GetType().ToString()); 
Console.WriteLine("val5的实际类型是:{0}", val5.GetType().ToString()); 
    } 
}
輸出:
val1的实际类型是:System.Char
val2的实际类型是:System.String
val3的实际类型是:System.Int32
val4的实际类型是:System.Double
val5的实际类型是:System.Boolean

C#中關鍵字var和dynamic的差異是什麼?

1、宣告的變數

關鍵字var是在C#3.0中引入的,聲明的變數是靜態類型的,變數的類型由編譯器在編譯時決定。

關鍵字dynamic是在C#4.0中引入的,聲明的變數是動態類型的,變數的類型由編譯器在執行時決定。

2、初始化

關鍵字var宣告的變數應在宣告時初始化,這樣編譯器就會根據初始化的值來決定變數的型別。如果變數未初始化,則拋出錯誤。

關鍵字dynamic聲明的變數在聲明時不需要初始化此類型的變量,因為編譯器在編譯時不知道變數的類型。如果變數未初始化,也不會拋出錯誤。

3、intelliSense的支援

關鍵字var支援visual studio中的intelliSense。關鍵字dynamic不支援visual studio中的intelliSense

###4、套用#########關鍵字var不能用於屬性或從函數傳回值。它只能用作函數中的局部變數。 ######關鍵字dynamic可以用於屬性或從函數傳回值。 ######以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! ! ###

以上是C#中var和dynamic之間的區別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn