我是c#的新手,需要帮助了解以下函数中发生的事情
public bool parse(String s)
{
table.Clear();
return parse(s, table, null);
}
其中table是Dictionary。我可以看到它是递归的,但是当它被定义为只取一个字符串时,解析如何被传递三个参数?
编辑:如何删除问题?解析已经重载 facepalm
答案 0 :(得分:7)
重载parse
存在,接受3个参数。
答案 1 :(得分:3)
不,它不是递归的。
这是一个完全不同的功能。
在C#和C ++中,不同的函数可以具有相同的名称。这称为“重载”
答案 2 :(得分:0)
您的代码中必须有另一个定义,它具有一个接受三个参数的解析方法。右键单击返回行的“解析”,然后在visual studio中选择“转到定义”以找到它。
答案 3 :(得分:0)
基于类的面向对象语言中的方法重载是一个非常有用的工具。方法类似于函数(它们具有参数,它们返回一个值,除非它们是空的并且它们执行某些操作),但它们是类(如果它们是静态的)或对象的一部分。方法由方法签名识别。如果为类或类的对象定义两个具有相同名称的方法,但参数列表不同,则它们将成为两种不同的方法,具有相同的名称。
优点: 1.)如果某些方法基本上是相同的,你会从一开始就知道,因为你给它们完全相同的名字。 2.)您可以使用重载以简单的方式解决许多问题,这些问题在C等语言下很难管理。
如果你在那里调用parse(“foo”)会发生递归,因为那会调用相同的函数。
答案 4 :(得分:0)
解析函数正在重载。在重载相同的功能可以根据参数做不同的工作。
第二个解析方法,除了3个参数。