很多時候它發生,我有私有方法而變得非常大,幷包含重複的任務,但這些任務是如此特殊,它並沒有什麼意義,並提供給其他任何代碼的一部分。C#:爲什麼我們不能有內在的方法/局部功能?
所以這將是非常偉大的,是能夠創造在這種情況下,「內部方法」。
是否有任何技術(甚至是哲學?)限制,以防止C#從給我們呢?或者我錯過了什麼?自2016年
更新:這是來了,這就是所謂的「本地功能」。看到明顯的答案。
很多時候它發生,我有私有方法而變得非常大,幷包含重複的任務,但這些任務是如此特殊,它並沒有什麼意義,並提供給其他任何代碼的一部分。C#:爲什麼我們不能有內在的方法/局部功能?
所以這將是非常偉大的,是能夠創造在這種情況下,「內部方法」。
是否有任何技術(甚至是哲學?)限制,以防止C#從給我們呢?或者我錯過了什麼?自2016年
更新:這是來了,這就是所謂的「本地功能」。看到明顯的答案。
好像我們會得到什麼我C#7 /的Visual Studio 15與局部函數想:
https://github.com/dotnet/roslyn/issues/2930
private int SomeMethodExposedToObjectMembers(int input)
{
int InnerMethod(bool b)
{
// TODO: Change return based on parameter b
return 0;
}
var calculation = 0;
// TODO: Some calculations based on input, store result in calculation
if (calculation > 0) return InnerMethod(true);
return InnerMethod(false);
}
太糟糕了,我不得不等待超過7年爲這:-)
另請參閱早期版本的C#的其他答案。
好了,我們可以有一個函數內部定義的「匿名方法」(我不建議使用他們組織了大量方法):
void test() {
Action t =() => Console.WriteLine("hello world"); // C# 3.0+
// Action t = delegate { Console.WriteLine("hello world"); }; // C# 2.0+
t();
}
如果事情是比一般的好漫長而複雜做法是將其重構爲一個單獨的類(正常或靜態 - 根據上下文) - 在那裏,你可以有私有方法,這將是具體僅此功能。
我知道有很多人不喜歡的區域,但是這是他們可以通過分組的具體方法爲區域證明是有用的情況。
如果你的方法變得太大,可以考慮把它在一個單獨的類,或創建私有的輔助方法。一般來說,無論何時我通常會寫評論,我都會創建一個新方法。
你能給出一個更具體的例子?讀您的文章後,我有以下印象,這當然只是猜測的,由於有限的信息:
阿希姆
更好的解決方案是重構該方法來分離類。在初始類中創建此類的實例作爲專用字段。公開大型方法並將大型方法重構爲多個私有方法,因此它將清楚它的功能。
什麼比私有方法的詳細內?只有一種方法可用的方法?這只是看起來更多的代碼而已。 – kenny 2009-07-31 09:59:04
你錯過了什麼。自C#2.0以來,C#已具備此功能。 – 2009-07-31 15:31:58
@Eric Lippert:你可以提供一些細節嗎?謝謝。 – Marc 2010-01-20 13:47:45