2010-06-01 13 views
6

Sono nuovo di C# e hanno bisogno di aiuto per capire cosa sta succedendo nel seguente funzioneC# parametri in discussione

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

cui tavolo è un dizionario. Posso vedere che è ricorsiva, ma come viene passata l'analisi di tre parametri quando viene definito per prendere solo una stringa?

MODIFICA: come si elimina una domanda? parse è stato sovraccaricato facepalm

+4

C'è un altro metodo 'parse' che richiede 3 parametri. Se ti trovi in ​​Visual Studio, fai clic con il pulsante destro del mouse e scegli "Vai alla definizione" –

+1

Non è necessario eliminare la domanda. Dovresti accettare una delle risposte sottostanti che osserva che è sovraccarico poiché è la risposta corretta alla domanda. –

+0

+1 per compensare il downvoter; perché i sovraccarichi sono un elemento perfettamente legittimo su cui essere confusi – JYelton

risposta

7

è sovraccaricato parse esiste che accetta 3 argomenti.

0

Ci deve essere un'altra definizione nel codice che ha un metodo di analisi che accetta tre parametri. Fai clic destro su "parse" sulla riga con il ritorno e seleziona "Vai alla definizione" in Visual Studio per trovarlo.

3

No, non è ricorsivo.

È una funzione completamente diversa.

In C# e anche in C++, diverse funzioni possono avere lo stesso nome. Questo è chiamato "overloading"

0

L'overloading del metodo in lingue orientate agli oggetti basate sulle classi è uno strumento molto utile. I metodi sono come le funzioni (hanno dei parametri, restituiscono un valore a meno che non siano vuoti e fanno alcune cose), ma fanno parte di una classe (se sono statici) o di un oggetto. Un metodo è identificato da una firma del metodo. Se si definiscono due metodi con lo stesso nome per una classe o gli oggetti della classe, ma l'elenco dei parametri è diverso, diventano due metodi diversi, con lo stesso nome.

Vantaggi: 1.) Se alcuni metodi stanno fondamentalmente facendo lo stesso, lo saprete fin dall'inizio, perché date loro esattamente lo stesso nome. 2.) È possibile utilizzare l'overloading per risolvere molti problemi in un modo semplice che sono molto difficili da gestire in lingue come C.

La ricorsività si verifica se si chiama parse ("foo") lì, perché ciò chiamerebbe il stessa funzione.

0

La funzione di analisi è in sovraccarico. In sovraccarico la stessa funzione può fare lavori diversi a seconda del parametro.

Secondo metodo di analisi eccetto 3 argomenti.