2010-06-01 112 views
6

我是新來的C#和需要幫助理解什麼是在下面的函數C#參數質疑

public bool parse(String s) 
    { 
     table.Clear(); 
     return parse(s, table, null); 
    } 

,其中表是一個字典回事。我可以看到這是遞歸的,但是當它被定義爲只接受一個字符串時,解析如何傳遞三個參數?

編輯:我該如何刪除一個問題?解析已超載facepalm

+4

還有另外一個需要3個參數的'parse'方法。如果您使用Visual Studio,請右鍵單擊它並選擇「轉到定義」 – 2010-06-01 21:21:59

+1

沒有必要刪除問題。你應該接受下面的答案之一,指出它是超載的,因爲這是問題的正確答案。 – 2010-06-01 21:25:16

+0

+1來抵消downvoter;因爲過載是一個完全合法的項目,可能會讓人困惑 – JYelton 2010-06-01 23:11:32

回答

7

它被超載parse存在,接受3個參數。

0

你的代碼中必須有另一個定義,它有一個接受三個參數的解析方法。右鍵單擊帶有返回的行上的「parse」,然後在visual studio中選擇「轉到定義」以查找它。

3

不,它不是遞歸的。

這是一個完全不同的功能。

在C#和C++中,不同的函數可以具有相同的名稱。這叫做'超載'

0

在基於類的面嚮對象語言中的方法重載是一個非常有用的工具。方法就像函數一樣(它們有參數,它們返回一個值,除非它們是無效的並且它們做某些事情),但它們是類的一部分(如果它們是靜態的)或對象。一種方法由方法簽名來標識。如果爲一個類或類的對象定義了兩個具有相同名稱的方法,但參數列表不同,它們將成爲兩個不同的方法,並且具有相同的名稱。

好處: 1.)如果某些方法基本上是一樣的,從一開始就會知道,因爲您給它們的名字完全一樣。 2.)你可以使用超載來解決很多問題,很難用C語言來管理。

如果你在那裏調用parse(「foo」),會發生遞歸性,因爲那會調用功能相同。

0

解析函數超載。在重載的同一功能中可以根據參數做不同的工作。

除3個參數外的第二個解析方法。