He empezado a notar que a veces cuando estoy haciendo llamadas a métodos en C# que los nombres de los parámetros para el método que yo estoy llamando aparecerá en la lista de intellisense anexa con dos puntos, y que yo pueda, a continuación, el formato de la llamada a un método así:

MethodCall(parameter1:value1, parameter2:value2);

Esta es una nueva característica del lenguaje? Me recuerda a la forma en que usted puede llamar a procedimientos almacenados en SQL y especificar los nombres de los parámetros así:

spDoSomeStuff @param1 = 1, @param2 = 'other param'

Es esta una característica similar? Si es así, ¿con qué fin? Si no, ¿qué es y de qué se va a utilizar para.

6 Comentarios

  1. 37

    Que es una nueva característica. Ver aquí: http://msdn.microsoft.com/en-us/library/dd264739.aspx
    Los parámetros con nombre estándar en ObjectiveC, por ejemplo. Toma algún tiempo para acostumbrarse a ellos, pero son una buena cosa. Sólo a partir de la observación puede saber en qué parámetro está destinado.

    • Puedo ver un montón de valor en tener el nombre del parámetro visible inmediatamente sin tener que desplazarse a la del método de definición o dejar de intellisense de decir lo que son.
  2. 20

    Parámetros con nombre permiten establecer de forma explícita el valor de los argumentos en un orden personalizado independiente de la firma. Las firmas de método son definidos por los tipos de argumento, es decir, Foo( int i, bool b ), la cual sólo se aceptan los argumentos de tipo int y bool en ese orden. Los argumentos con nombre permitir pasar a b primero y yo segundo.

    • Estoy familiarizado con el concepto de la firma de un método y me preguntaba si esto le permitirá cambiar el orden de los parámetros en la llamada. Tengo curiosidad, aunque – ¿cuál es el punto de ser capaz de cambiar el orden?
    • Es realmente un código de «legibilidad» de preferencia. La firma del método es estático en el que cuando se llama a los argumentos que se colocará en la pila en el orden en que están definidas en la firma del método. El «Nombre» Argumentos de función le permite reorganizar los argumentos de su preferencia.
    • Para mí, el valor real viene cuando se tienen métodos con muchos valores por defecto. Si usted sólo necesita cambiar algunos de ellos se puede elegir el uso de parámetros con nombre. De esta manera usted no tiene que repetir todos los valores predeterminados anterior a la que desee cambiar.
    • gran punto. Que les parece útil.
    • En realidad solo soy la discusión de ese punto como un beneficio a la hora de explicar este concepto a algunos compañeros de trabajo hace un par de semanas. Ni idea de por qué no me incluya en la respuesta es, definitivamente, un gran beneficio. +1
  3. 12

    Vale mencionar que, a diferencia de los parámetros opcionales, puede omitir ciertos argumentos y pasar sólo los parámetros que usted está interesado en.

    public void Example(int required, string StrVal = "default", int IntVal = 0)
    {
        //...
    }
    
    public void Test()
    {
        //This gives compiler error
        //Example(1, 10);
    
        //This works
        Example(1, IntVal:10);
    }
  4. 0

    @Krumelur dijo que «los parámetros con Nombre estándar en ObjectiveC, por ejemplo.»

    Que no es realmente correcto. Objective-C se utiliza una notación de infijo, por lo que este mensaje de llamada:

    [foo setRed:255 Green:255 Blue:0];

    es el setRed:Verde:Azul: mensaje (incluyendo los dos puntos!) con el (255,255,0) argumentos intercalados en el nombre de mensaje.

    Aunque hay que conceder que, a primera vista Objetivo-C de la sintaxis da la apariencia de que Objective-C utiliza parámetros con nombre. Pero eso no es realmente correcto, y la incomprensión de la diferencia puede ser un obstáculo para el aprendizaje de Objective-C.

    (Yo habría respondido en un comentario, pero de alguna manera me perdí todas mis puntos de reputación y estoy empezando de nuevo. Drat. C’est la vie.)

Dejar respuesta

Please enter your comment!
Please enter your name here