我會發現爲嵌套類中的類編寫我的exensions方便/合乎邏輯。主要原因是我可以簡單地命名該類Extensions
,並讓它的外部命名範圍爲編譯器提供一個唯一的類型名稱。爲什麼不允許嵌套類中的擴展方法定義?
什麼是技術上的原因不允許這樣的:
public class Foo
{
ObjectSet<Bar> Bars { get; set; }
public static class Extensions
{
public static Bar ByName(this ObjectSet<Bar> bars, string name)
{
return bars.FirstOrDefault(c => c.Name == name);
}
}
}
而現在我要創建一個單獨的獨立類。
更新/說明:我並沒有想象它是一個內部類的事實會影響擴展方法的可用性範圍。我只想用一個單獨的名稱來解決實際的編碼問題。
可能#4:編譯器分析成本高。 http://blogs.msdn.com/b/ericlippert/archive/2012/06/18/implementation-defined-behaviour.aspx – 2012-07-12 01:25:48
Duplicate:http://stackoverflow.com/a/3934737/1464699 – 2012-07-12 01:30:07
可能的重複[爲什麼擴展方法只允許在非嵌套的非泛型靜態類中使用?](http://stackoverflow.com/questions/3930335/why-are-extension-methods-only-allowed-in-non-nested-non-generic-static-class) – 2012-07-12 01:30:42