當我發現沒有直接的方法對IList < T>進行排序或執行二進制搜索時,我非常驚訝。就像有一些靜態方法可以在數組上進行排序和執行二分搜索一樣,我認爲使用IList類似的靜態方法會非常有幫助。爲什麼沒有排序爲IList <T>?!?! (編輯)
目前:
class Array
{
static Sort<T>(T[] array);
static int BinarySearch<T>(T[] array, T item);
}
我希望他們能補充:
class List
{
static Sort<T>(IList<T> list);
static int BinarySearch<T>(IList<T> list, T item);
}
我看了一眼在.NET Framework 4.0 Beta版SDK和有仍然沒有出現是一個解決方案這個問題。
我知道我可以通過創建一個擴展方法來檢查它是否是列表< T>,然後使用列表< T>實例進行排序/搜索;然而,如果它不是列表< T>的一個實例,那麼我必須執行一個副本(對於非常大的列表來說這很難理解)。我知道我可以做到這一切,但爲什麼?有沒有故意遺漏這個功能的原因?
爲了試圖在.NET 4.0 Framework中獲得這個,我通過微軟的Connect程序創建了一個建議。如果你對我這個問題感到沮喪,請對它投票,也許它會被添加。
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=474201
您能否將這個改爲一個問題,也許是「有什麼原因c#沒有內置排序和二進制搜索IList?」現在你只是有點發表聲明,並呼籲人們在微軟的網站上爲此投票,因爲它存在被封爲垃圾郵件的風險。 –
Kip
2009-07-20 03:27:38
這是一種隱藏在漫無邊際的方式,但有一個問題可以幫助你我明白爲什麼它不存在,如果微軟故意排除它: 「是否有某些原因他們故意省略此功能?」 – dewald 2009-07-20 03:33:18
井堆溢出是一個問題/答案網站。把重點放在你的問題上(特別是在問題的標題中)是一種很好的禮儀。現在聽起來您已經認爲這是一個錯誤,並且您希望其他人告訴Microsoft您同意。 SO的更好的精神在於清楚地表明問題是「是否有充足的理由或者這是一個錯誤?」 – Kip 2009-07-20 03:40:34