日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# dynamic 类型用法举例

發布時間:2023/12/4 C# 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# dynamic 类型用法举例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ?dynamic類型允許編寫忽略編譯期間的類型檢查的代碼。編譯器假定,給dynamic類型的對象定義的任操作都是有效的。如果該操作無效,則在代碼運行之前不會檢測該錯誤,如下面的示例所示:

這個示例沒有編譯,因為它調用了staticPerson.GetFullName方法。因為Person 對象上的方法不接受兩個參數,所以編譯器會提示出錯。如果注釋掉該行代碼,這個示例就會編譯。如果執行它,就會發生一個運行錯誤。所拋出的異常是RuntimeBinderException 異常。RuntimeBinder對象會在運行時判斷該調用,確定Person類是否支持被調用的方法。

? ? ? 與 var 關鍵字不同,定義為dynamic的對象可以在運行期間改變其類型。注意在使用var關鍵字時,對象類型的確定會證遲。類型一旦確定,就不能改變。動態對象的類型可以改變,而且可以改變影次,這不同于把對象的類型事轉換為另一種類型。在強制轉換對象的類型時,是用另一種兼容的類聚們建一個新對象。如,不能把int強制轉換為Penon對象。在下面的示例中,如果對象是動態對象,就可以把它從int變成Persor類型:

static void Main(string[] args){//var staticperson = new Person();//dynamic dynamicPerson = new Person();//staticperson.GetFullName("John", "Smith");//dynamicPerson.GetFullName("Jchn", "Smith");dynamic dyn;dyn = 100;Console.WriteLine(dyn.GetType());Console.WriteLine(dyn);dyn = "This is a string";Console.WriteLine(dyn.GetType());Console.WriteLine(dyn);dyn = new Person() { FirstName = "Bugs", LastName = "Bunny" };Console.WriteLine(dyn.GetType());Console.WriteLine($"{dyn.FirstName} {dyn.LastName}");Console.ReadKey();}

執行這段代碼可以看出,dyn對象的類型實際上從System.Int32變成System.String.再變成Person。如果 dyn聲明為int 或string,這段代碼就不會編譯。

注意:對于dynamic 類型有兩個限制。動態對象不支持擴展方法,匿名函數(lambda表達式)也不能用作動態方法調用的參數,因此LINQ不能用于動態對象,大多數LINQ調用大都是擴展方法,而lambda表達式用作這些擴展方法的參數.

技術群:添加小編微信并備注進群

小編微信:mm1552923 ??

公眾號:dotNet編程大全? ? ??

總結

以上是生活随笔為你收集整理的C# dynamic 类型用法举例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。