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

歡迎訪問 生活随笔!

生活随笔

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

C#

《Effective C#》读书笔记——条目10:使用可选参数减少方法重载的数量C#语言习惯...

發布時間:2024/1/17 C# 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Effective C#》读书笔记——条目10:使用可选参数减少方法重载的数量C#语言习惯... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  C#4.0?引入了具名參數(MSDN翻譯為“命名實參”,個人認為具名參數更形象,可選參數亦是)和可選參數(可選實參)。客戶端代碼使用具名參數意味著:方法中的參數名稱也成為了公有接口的一部分。假如修改公有參數的名稱將有可能破壞調用者的代碼。這意味著:調用者應該盡可能的避免使用具名參數,而作為API的設計者,也應該避免修改公有貨受保護方法中參數的名稱。

  當然,并不是說具名參數是一無是處的,它也有自己的適用的場景。具名參數配合可選參數可以簡化很多API的調用語法,特別是Microsoft Office的COM API。如下:

1 var wasted = Type.Missing; 2 var wordApp = new Microsoft.Office.Interop.Word.Application(); 3 wordApp.Visible = true; 4 5 Documents docs = wordApp.Documents; 6 Document doc = docs.Add(ref wasted, ref wasted, ref wasted); 7 8 Range range = doc.Range(0, 0); 9 range.InsertAfter("Testing,testing,testing...");

?

任何的Office Interop應用程序都要使用多次Type.Missing對象,這些毫無意義的代碼掩蓋了核心的邏輯;這是C#添加可選參數具名參數主要原因。在添加可選參數后在Office API將會為可能使用Type.missing的地方創建默認值,上面的代碼可以簡化成這樣:

1 var wordApp = new Microsoft.Office.Interop.Word.Application(); 2 wordApp.Visible = true; 3 4 Documents docs = wordApp.Documents; 5 Document doc = docs.Add(); 6 7 Range range = doc.Range(0, 0); 8 range.InsertAfter("Testing,testing,testing...");

?

?我們可以看到這個小小的修改增強了代碼的可讀性。現在假設你想創建一個新的Web頁面而不是一個Word文檔,而這時Add()方法的最后一個參數,這種情況下可以使用具名參數來指定最后一個參數:

1 var wordApp = new Microsoft.Office.Interop.Word.Application(); 2 wordApp.Visible = true; 3 Documents docs = wordApp.Documents; 4 5 object docType = WdNewDocumentType.wdNewWebPage; 6 Document doc = docs.Add(DocumentType: ref docType); 7 8 Range range = doc.Range(0, 0); 9 range.InsertAfter("Testing,testing,testing...");

?具名參數的具體含義是:對于那些提供了默認從參數的API,你可以僅提供要用到的那些參數。使用具名參數要比使用多個重載要簡單得多。在上面的實例示例中的第六行的ADD方法具名參數使用了ref關鍵字,在COM場景的編程中使用C#4.0,ref參數也是可選的:因為COM本身都是通過引用傳遞對象的,所以幾乎所有的參數都會以引用的形式傳遞,即使這些參數不會被調用的方法修改。

  在協作開發中,如果你的代碼需要供他人調用,不管你是否同意你的API使用者都可以在任意的地方使用具名參數調用你的方法,所以你必須將參數的名稱也當作公有接口的一部分。修改參數名稱可能會導致客戶代碼無法通過編譯。

小節:

  對于程序集的第一次發布,可以隨意使用可選參數和具名參數,并任意給出你想要提供的重載。但是在后續的發布中,必須為額外的參數創建重載。這樣才能保證現有的程序仍然能夠正常運行;并且在后續發布中要避免修改參數名稱,因為參數名稱以及成為了公有接口的一部分。

?

參考資料&進一步閱讀

命名實參和可選實參

轉載于:https://www.cnblogs.com/IPrograming/archive/2012/10/07/Effective_CSharp_10.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的《Effective C#》读书笔记——条目10:使用可选参数减少方法重载的数量C#语言习惯...的全部內容,希望文章能夠幫你解決所遇到的問題。

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