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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Microsoft.CSharp.dll程序集的作用

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

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

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

?收藏

??分享

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

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

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

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

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

?
  • 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)用這個(gè)方法時(shí),會(huì)發(fā)現(xiàn)對(duì)ToUpper()方法(注意T和U這兩個(gè)字母)的調(diào)用正確無(wú)誤,但控制臺(tái)上還是會(huì)顯示一條錯(cuò)誤數(shù)據(jù)。

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

    總結(jié)

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

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