西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)C#.NET → 可選參數(shù)在.NET中全面開花

可選參數(shù)在.NET中全面開花

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時間:2010/7/8 17:54:30字體大。A-A+

作者:佚名點擊:53次評論:0次標(biāo)簽: C#

API精靈FOR c#v2.35 最新版
  • 類型:編程輔助大。324KB語言:中文 評分:7.5
  • 標(biāo)簽:
立即下載

.NET一直都支持可選參數(shù),但是C#語言卻并不支持,除了調(diào)用COM庫以外,可選參數(shù)通常是被禁止使用的,F(xiàn)在,隨著C# 4對可選參數(shù)的支持,我們可以看到可選參數(shù)被越來越多的使用,而不僅僅限于遺留代碼中。這些應(yīng)用包括與動態(tài)語言的互操作、只讀數(shù)據(jù)類型,以及ASP.NET MVC中的許多地方。

顯然,COM仍然是可選參數(shù)的主要用武之地。例如,當(dāng)你使用Office庫時,某個函數(shù)可能會有超過20個參數(shù),手動指定每一個參數(shù)是非常不方便的。如果再沒有輔助的標(biāo)記,你就只能通過數(shù)參數(shù)的個數(shù)來確定哪個值對應(yīng)的是哪個參數(shù)了,這非常容易出錯。對于不熟悉COM的人,你可以想象一下從前主流語言不支持函數(shù)重載時的情景,那是一樣的感覺。由于包含可選參數(shù)的函數(shù)和一般的函數(shù)沒有區(qū)別,因此可以很好的解決這個問題。

除了COM之外,C#團(tuán)隊還利用C# 4作為晚綁定的途徑來支持DLR。事實上,這才是可選參數(shù)真正的目的,其他都是附帶的便利。由于動態(tài)語言沒有顯式的類型聲明,無法基于參數(shù)類型進(jìn)行函數(shù)重載,因此可選參數(shù)是非常必要的。

隨著多核、多處理器計算機的增長,對于同步與并發(fā)的討論也越來越多。只讀數(shù)據(jù)類型以及如何定義它們成為了一個普遍的話題。如果類型中的每個字段都需要被設(shè)置,那么標(biāo)準(zhǔn)的構(gòu)造函數(shù)就可以解決問題。但如果類型中的大部分字段都是可選的,就比較麻煩了。重載構(gòu)造函數(shù)可以解決一部分問題,而對于使用Java或者舊版本C#的人來說,他們可能會更傾向于使用Builder模式。但如果有了可選參數(shù),只需要一個構(gòu)造函數(shù)就可以解決問題了。ASP.NET MVC 2中的Controller現(xiàn)在可以為query string參數(shù)設(shè)置默認(rèn)值了。雖然你也可以使用attribute來設(shè)置,但可選參數(shù)是最簡潔的辦法。

微軟為ASP.NET MVC推出的新視圖引擎Razor,在helper方法中使用了可選參數(shù)。這讓helper可以包含更多選項的同時,也支持自說明的編碼風(fēng)格。此外,Razor還會自動將表達(dá)式轉(zhuǎn)換為委托,而不需要使用lambda或匿名委托的語法。

還有一些我們永遠(yuǎn)都不希望使用可選參數(shù)的地方。CLS定義了CLR的一個子集,所有.NET語言都要支持這個子集。CLS就明確定義,不可以依賴可選參數(shù)。這意味著可選參數(shù)將不會出現(xiàn)在BCL中,而且可能也不會出現(xiàn)在今后所有.NET Framework包含的類庫中。但對于CodePlex上的非官方類庫來說,這條規(guī)則不需要嚴(yán)格遵守。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)