Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 方法中的方法太多?_C#_Function_Methods - Fatal编程技术网

C# 方法中的方法太多?

C# 方法中的方法太多?,c#,function,methods,C#,Function,Methods,在我的Main()中,我从ClassA调用MethodA(),然后从ClassB调用MethodB(),依此类推。在它最终返回我想要返回到Main()的值之前,这大约需要5层 每个方法中都有一个正在传递和处理的对象 这是一种好的做法吗?对于这种情况,还有其他方法吗?是的,这是一种很好的做法 而5级仍然非常接近于零。在500岁时,你可能会停下来想一想,到了5000岁,你会感到不安 每个方法中都有一个正在传递和处理的对象 它将通过引用传递,因此没有开销 调用堆栈的深度为5算不了什么。在Windows

在我的
Main()
中,我从
ClassA
调用
MethodA()
,然后从
ClassB
调用
MethodB()
,依此类推。在它最终返回我想要返回到
Main()
的值之前,这大约需要5层

每个方法中都有一个正在传递和处理的对象


这是一种好的做法吗?对于这种情况,还有其他方法吗?

是的,这是一种很好的做法

而5级仍然非常接近于零。在500岁时,你可能会停下来想一想,到了5000岁,你会感到不安

每个方法中都有一个正在传递和处理的对象


它将通过引用传递,因此没有开销

调用堆栈的深度为5算不了什么。在Windows窗体或WPF应用程序中执行任何操作之前,您已经有了5个调用堆栈

在堆栈上放置一个框架确实需要一些成本,但是现在你不必太担心这一点。您必须注意是否要执行递归操作,因为帧的数量可能会快速增加。这可能会很贵


如果您失去了对调用堆栈的概述,您必须担心。在我看来,如果你是初学者,100的调用堆栈很难阅读。

如果你使用一种算法——例如——递归地运行一个字符数组来生成每个字符组合(不,我不是暴力密码黑客!),那么深层递归调用堆栈可能是解决方案的一部分


正如Henk Holterman所说,通过引用传递的每个对象都只是一个指针、32位整数或64位整数,具体取决于处理器体系结构/构建配置。每次调用4字节或8字节。

我同意OOP实际上就是这样工作的。然而,5000?不是很多吗?对我来说,调用堆栈中有5000个方法听起来像是一个调试地狱。事实上,500个方法已经让我感到不安了。好的,你可以有一些递归,但是深度是500,真的有必要吗?我想你必须先看看你的设计。500-5000听起来更像是一个递归。对于5000+个递归,您必须首先考虑内存使用情况……因为这可能有点接近极限。5000有点夸张。只是为了强调5算不了什么。