這是爲什麼?我會發現它真的很高興能夠鎖定一些擴展方法,只能在我的一個類中使用。真的不希望有一定的可擴展方法無處不在......他們看起來比普通的靜態方法好得多:P嵌套靜態類中不允許使用擴展方法嗎?
對於澄清:
我想這些擴展方法的原因是因爲我正在擴展一個Form,其上有一個DataGridView。而且我已經非常厭倦了這樣的詩句中:
foreach(var row in grid.Rows.OfType<DataGridViewRow>().Where(r => (bool) r.Cells[checkBoxColumn.Index].Value))
foreach(var row in grid.SelectedRows.OfType<DataGridViewRow>().Where(r => (bool) r.Cells[checkBoxColumn.Index].Value))
想擴展方法,這樣我可以只是做
foreach(var row in grid.Rows.CheckedRows())
foreach(var row in grid.SelectedRows.CheckedRows())
所以,換句話說,這種擴展方法沒有用處可言這門課以外但它會使代碼更加清潔。當然也可以制定常規方法,這就是我最終做的,因爲這是不可能的。
Aaanyways,我只是想知道,如果有人有一些很好的論點,他們爲什麼選擇把這樣的限制放在可以創建擴展方法的地方。 必須處於靜態類別纔有意義。 不能在嵌套的靜態類不對我而言至少...
看起來這些答案都沒有給出一個很好的技術原因,爲什麼它不能做到。 – 2012-10-22 09:08:39
像你一樣,我更喜歡擴展方法的語法。 SomeThing.HasSomeCondition()優於HasSomeCondition(SomeThing)。 – Mir 2014-01-29 18:48:42