讓你覺得破壞了封裝性的擴充套件方法

2022-02-22 01:07:30 字數 1123 閱讀 7597

擴充套件方法

源於對擴充套件方法的了解是來自list的where、order、groupby等方法的使用,智慧型感知提示這些方法都是擴充套件方法,於是msdn上查閱後總結如下自定義擴充套件方法(將字串轉換為int,**拷貝)

namespace mycommon}}

微軟規定,擴充套件方法:1、必須是靜態類和靜態方法(而且必須是public

2、引數必須以this作為字首

其實咋一看,擴充套件方法明顯違法了封裝性的原則,把方法設為public,讓外界直接呼叫,這是很違法封裝原則的,但是這裡沒有辦法,如果改為private,外界例項無法訪問,但是微軟告訴我們,雖然是使用例項方法的語法來呼叫擴充套件方法,但是編譯器生成的il中間語言的時候會把**轉換成對靜態方法的呼叫,理論上說並未真正違法封裝性的原則,但是這種解釋有點牽強。

我突然發現,該靜態類的名稱 estring似乎毫無用處,似乎可以隨意改動,的確是這樣,這裡要的只是命名空間和方法名,而方法的第乙個引數決定了該擴充套件方法是用於對何種型別的擴充套件,例如上面的例子this string t,第乙個引數的型別是string,則是對string做的擴充套件方法

另外擴充套件方法的優先順序總是比例項本身的方法的優先順序低,即如果a類本身有fun1()方法,則另外擴充套件乙個同名的fun1方法,則擴充套件的fun1,永遠不會執行,因為在編譯的時候編譯器永遠不會繫結到該擴充套件方法

最新的F 破壞了二進位制相容性

微軟在 vs 2010 beta 1中包含了f 並發布了對應的用於vs2008的ctp更新。最新的二進位制版本1.9.6.16,和之前的版本1.9.6.2不相容,意味著所有之前的 都需要重新編譯。微軟不僅把f 新增到vs 2010 beta 1中以實現2007年許下在visual studio中包含...

你覺得軟體系統的可行性分析是這樣?

技術可行性使用現有的技術能實現這個系統嗎?經濟可行性這個系統的經濟效益能超過它的開發成本嗎?操作可行性系統的操作方式在這個使用者組織內行得通嗎?首先需要進一步分析和澄清問題定義。在問題定義階段初步確定的規模和目標,如果是正確的就進一步加以肯定,如果有錯誤就應該及時改正,如果對目標系統有任何約束和限制...

這樣做,讓你的測試用例覆蓋性最強!

對專業的 測試人員來說,編寫 測試用例 並不陌生,但是如何編寫覆蓋性強的測試用例,就需要我們再三思考後落筆哦 首先我們來想下測試用例的前世今生 1.測試用例因何產生?2.測試用例為誰而寫?這兩個問題我們各用一句話來回答 測試用例是產品原型下的衍生物,為想要了解這個系統 需求 的人而寫,且隨著產品原型...