这是JavaScript中非常常见的技术,但我想确保我可以在C#中执行此操作。
我在函数DoSomething()
中并且在执行调用期间,我需要使用不同的值调用相同的函数。见下文:
public bool DoSomething(int id)
{
if(id < 100)
{
// Some logic here
var someValue = id + 50;
var outcome = DoSomething(someValue);
// Some more logic here
}
else
{
// Some other logic here
}
}
我认为没有理由不能做上述事情,但想知道这是否是C#的不良做法。
答案 0 :(得分:2)
这个概念被称为recursion,并不仅限于JavaScript。它实际上是一种非常广为人知的技术,实际上正在替换某些语言中的循环,例如scheme。
在C#中调用函数也是有效的。只要确保你有一个终止条件,因为你有一个限制堆栈。由于每个函数调用都会将另一个项目推送到调用堆栈,因此最终可能会出现所谓的堆栈溢出
答案 1 :(得分:2)
此技术称为Recursion。
计算机科学中的递归是一种解决问题的方法 问题取决于同一问题的较小实例的解决方案 (与迭代相反)。
大多数计算机编程语言通过允许a来支持递归 函数在程序文本中调用自身。
这不是一种不好的做法,但对你来说是否正确取决于你的用例。
答案 2 :(得分:1)
不,不错。几乎每种编程语言都很常见。但是,你必须小心不要让无限循环。