2010-06-01 11 views
6

Soy nuevo en C# y necesita ayuda para entender lo que pasa en la siguiente funciónparámetros C# Pregunta

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

donde tabla es un diccionario. Puedo ver que es recursivo, pero ¿cómo se pasa el parseo de tres parámetros cuando está definido para tomar solo una cadena?

EDITAR: ¿cómo elimino una pregunta? el análisis se ha sobrecargado facepalm

+4

Hay otro método 'parse' que toma 3 parámetros. Si está en Visual Studio, haga clic con el botón derecho y seleccione "Ir a definición" –

+1

No es necesario eliminar la pregunta. Debe aceptar una de las respuestas a continuación que indique que está sobrecargada, ya que esa es la respuesta correcta a la pregunta. –

+0

+1 para compensar al infractor; porque las sobrecargas son un elemento perfectamente legítimo para confundirse – JYelton

Respuesta

7

está sobrecargado parse existe que acepta 3 argumentos.

0

Tiene que haber otra definición en su código que tenga un método de análisis que acepte tres parámetros. Haga clic derecho en el "análisis" en la línea con la declaración y seleccione "Ir a definición" en el estudio visual para encontrarlo.

3

No, no es recursivo.

Es una función totalmente diferente.

En C#, y también en C++, diferentes funciones pueden tener el mismo nombre. Esto se denomina 'sobrecarga'

0

La sobrecarga de métodos en Lenguajes Orientado a Objetos basada en clases es una herramienta muy útil. Los métodos son funciones similares (tienen parámetros, devuelven un valor a menos que sean nulos y hacen algunas cosas), pero son parte de una clase (si son estáticos) o un objeto. Un método se identifica mediante una firma de método. Si define dos métodos con el mismo nombre para una clase o los objetos de la clase, pero la lista de parámetros es diferente, se convierten en dos métodos diferentes, con el mismo nombre.

Beneficios: 1.) Si algunos métodos básicamente están haciendo lo mismo, sabrá desde el principio esto, porque les da exactamente el mismo nombre. 2.) Puede usar la sobrecarga para resolver muchos problemas de una manera simple que son muy difíciles de manejar en idiomas como C.

La recursividad ocurriría si llamara a parse ("foo") allí, porque eso llamaría al misma función.

0

La función de análisis se está sobrecargando. Sobrecargar la misma función puede hacer diferentes trabajos dependiendo del parámetro.

Segundo método de análisis, excepto 3 argumentos.