在我的Main()
我从MethodA()
致电ClassA
,然后从MethodB()
拨打ClassB
,依此类推。在最终将我想要的值返回到Main()
之前,这大约需要5层。
有一个对象在每种方法中被传递并处理。
这是一个好习惯吗?这种情况还有另一种方法吗?
答案 0 :(得分:2)
是的,这是一个很好的做法。
5级仍然非常接近。在500,你可能会停下来思考它,在5000它会变得令人担忧。
有一个对象在每种方法中被传递并处理。
它将通过引用传递,因此没有开销。
答案 1 :(得分:0)
调用堆栈的深度为5是没有的。在Windows窗体或WPF应用程序中完成任何操作之前,您已经有一个5的调用堆栈。
将一个框架放在堆叠上会花费一些成本,但是现在你不必过于担心。你必须注意你是否要做递归的事情,因为帧的数量可以迅速增加。这可能会变得昂贵。
如果您丢失了调用堆栈的概述,则必须担心。在我看来,100的调用堆栈很难读,肯定是你是初学者。
答案 2 :(得分:0)
如果您正在使用算法 - 例如 - 以递归方式运行一系列字符来生成每个字符组合(不,我不是一个强力密码黑客!) - 然后是一个深度递归调用堆栈也许是解决方案的一部分。
正如Henk Holterman所说,通过引用传递的每个对象只是一个指针,32位整数或64位整数,具体取决于处理器体系结构/构建配置。这是每次调用的4个字节或8个字节。