日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Microsoft.CSharp.dll程序集的作用

發(fā)布時間:2023/12/10 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Microsoft.CSharp.dll程序集的作用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

《C#與.NET 4高級程序設(shè)計:第5版》第18章動態(tài)類型和動態(tài)語言運行時,本章,我們將學習dynamic關(guān)鍵字的方方面面,理解如何使用DLR (Dynamic Language Runtime,動態(tài)語言運行時)將松散的類型映射到正確的內(nèi)存對象。理解了DLR提供的諸多服務(wù)之后,你將看到一些示例,它們使用動態(tài)類型來簡化后期綁定方法的調(diào)用(通過反射服務(wù))并且可以方便地與遺留的COM庫進行通信。本節(jié)為大家介紹Microsoft.CSharp.dll程序集的作用。

作者:朱曄 等譯來源:人民郵電出版社|2011-04-03 12:59

?收藏

??分享

18.1.2 Microsoft.CSharp.dll程序集的作用

當使用Visual Studio 2010新建一個C#項目時,將自動引用一個名為Microsoft.CSharp.dll的.NET 4程序集(可以在Solution Explorer的References文件夾下找到)。這個庫非常小,只定義了一個命名空間(Microsoft.CSharp.RuntimeBinder)和兩個類(如圖18-2所示)。

?
(點擊查看大圖)圖18-2 Microsoft.CSharp.dll程序集

顧名思義,這兩個類為強類型的異常類。RuntimeBinderException是最普通的類,如果試圖調(diào)用一個不存在的動態(tài)數(shù)據(jù)類型的成員,將會拋出該異常(比如調(diào)用toupper()和Foo()方法)。如果調(diào)用了一個存在的成員但卻指定了錯誤的參數(shù)數(shù)據(jù),將同樣會拋出該異常。

由于動態(tài)數(shù)據(jù)的這種不確定性,在調(diào)用用C#的dynamic關(guān)鍵字聲明的變量的成員時,可以用合適的try/catch塊來包裹,并以一種優(yōu)雅的方式來處理異常。

?
  • static?void?InvokeMembersOnDynamicData() ?
  • { ?
  • ??dynamic?textData1?=?"Hello"; ?
  • ?
  • ??try ?
  • ??{ ?
  • ????Console.WriteLine(textData1.ToUpper()); ?
  • ????Console.WriteLine(textData1.toupper()); ?
  • ????Console.WriteLine(textData1.Foo(10,?"ee",?DateTime.Now)); ?
  • ??} ?
  • ??catch?(Microsoft.CSharp.RuntimeBinder.RuntimeBinderException?ex) ?
  • ??{ ?
  • ????Console.WriteLine(ex.Message); ?
  • ??} ?
  • }?
  • 在調(diào)用這個方法時,會發(fā)現(xiàn)對ToUpper()方法(注意T和U這兩個字母)的調(diào)用正確無誤,但控制臺上還是會顯示一條錯誤數(shù)據(jù)。

    ?
  • HELLO ?
  • 'string'?does?not?contain?a?definition?for?'toupper'?
  • 當然,如果將所有動態(tài)方法的調(diào)用都用try/catch塊來包裹,這個過程將是十分麻煩的。只要注意了拼寫和參數(shù)傳遞,就沒有必要都進行包裹。但是,當你不確定目標類型是否包含某個成員的時候,如果用try/catch塊來進行包裹的話,那么異常的捕獲就會十分方便了。

    總結(jié)

    以上是生活随笔為你收集整理的Microsoft.CSharp.dll程序集的作用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。