2010-07-31 38 views
1

問候,匿名方法太好了嗎? (C#)

我在使用的匿名方法,其中匿名方法鏈接調用的第一個調用同樣的事情,其他anonymus方法很多代碼庫工作。

main() 
{ 
anonymous1(); 
} 
anonymous1() 
{ 
    // call anonymous2 
} 
anonymous2() 
{ 
//call anonymous3 
} 
anonymous3() 
{ 
    // Call anonymous1 
} 

這就是基本分解,抱歉過分簡化。

我擔心的是,其中一個匿名方法導致問題鏈接的問題。國際海事組織看起來它只是不好的遞歸,這將導致一個stackoverflow異常。

感謝您的幫助提前。

回答

2

這一切都取決於你如何實現邏輯。

遞歸本身不是也不應該是一個問題。

有人可能會爭論任何使用遞歸的文件/文件夾算法。如果它得到很好的實施,你無需擔心。

0

除非編譯器或JIT優化應用尾調用優化的(它有可能不會,除非你在.NET CLR版本4在非調試模式下運行您的特定代碼允許這種優化),遞歸顯然承擔了堆棧溢出的潛在風險。

這裏的問題是,確實那代碼遞歸?如果是這樣,它會很快停止,還是會無限期地遞增?在這些情況的最後,你只應該期待真正的問題。因此,我同意吞噬極樂世界的答案,即它最終取決於邏輯。

也許你在那裏的代碼可以更好地構造 - 但是如果沒有更具體的東西來看,恕我直言,這是不可能的。

0

它不是真正的問題匿名方法,即使他們是匿名的可以讓事情有點難以跟蹤。方法本身的代碼是會導致一個stackoverflow或任何其他類型的問題。只要代碼儘可能清晰並且能夠很好地完成任務,您就不必擔心結構。

遞歸沒有什麼問題,你可以用一些測試和思考你的需求來消除你的疑惑。