從這個問題中我知道擴展方法只能在類實例上運行,而不能在靜態(tài)類本身上運行。這意味著我無法擴展像Convert和這樣的有用的靜態(tài)類Math。我想知道的是,為什么會這樣呢?在上面的鏈接中,對C#團隊如何實現(xiàn)這種功能提出了一些建議。有什么哲學原因為什么不支持它?例如,這是為什么沒有針對的內置LINQ 擴展的背后原理。ForEach<T>IEnumerable<T>
3 回答

HUH函數(shù)
TA貢獻1836條經(jīng)驗 獲得超4個贊
C#團隊可能已經(jīng)實現(xiàn)了這種功能。有什么哲學原因為什么不支持它?
沒有技術上的原因,也沒有哲學上的原因。然而,正如我經(jīng)常指出,我沒有提供的理由不這樣做的特征。功能并不便宜;它們非常昂貴,不僅必須證明自己的成本是合理的,而且還必須證明不使用該預算可以完成的其他一百項功能的機會成本。我們必須向利益相關者證明功能的成本是合理的,但是我們不必通過不實施不符合我們標準的功能來節(jié)省時間和精力。
特別是,所提出的功能對LINQ無效。添加了擴展方法以使LINQ正常工作。不能使LINQ正常工作的任何東西都很難進入C#3.0。我們按計劃進行了很多工作,花了很多時間。(令我驚訝的是自動屬性。)在設計之前就剪掉不必要的功能可以節(jié)省很多時間和精力,而其他功能事情做使LINQ的工作。
簡而言之:建議的功能從未達到過我們獲得凈收益超過成本的標準,而且我們一直擁有更重要的功能來花費有限的時間和精力。
- 3 回答
- 0 關注
- 1182 瀏覽
添加回答
舉報
0/150
提交
取消