2014-09-30 11 views
5

In alcune funzioni, mentre il passaggio di dati che avevo visto sintassi come questoParametri Colon in C#, che cosa fa il colon sta per

obj = new demo("http://www.ajsldf.com", useDefault: true); 

Qual è il significato di : qui e come è diverso da altri parametri che passiamo nei metodi.

risposta

10

Sono Named Arguments. Ti permettono di fornire un contesto all'argomento della funzione che stai passando.

Devono essere gli ultimi .. dopo tutti gli argomenti senza nome quando si chiama una funzione. Se ce n'è più di uno, possono essere passati in qualsiasi ordine, purché vengano dopo quelli non nominati.

Esempio: questo è sbagliato:

MyFunction(useDefault: true, other, args, here) 

Questo va bene:

MyFunction(other, args, here, useDefault: true) 

Dove MyFunction potrebbe essere definita come:

void MyFunction(string other1, string other2, string other3, bool useDefault) 

Ciò significa, si può anche fare questo :

MyFunction(
    other1: "Arg 1", 
    other2: "Arg 2", 
    other3: "Arg 3", 
    useDefault: true 
) 

Questo può essere veramente bello quando è necessario fornire un contesto in una chiamata di funzione altrimenti difficile da comprendere. Prendere MVC routing per esempio, la sua difficile dire cosa sta succedendo qui:

routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

Se si guarda la definizione .. ha senso:

public static Route MapRoute(
    this RouteCollection routes, 
    string name, 
    string url, 
    Object defaults 
) 

considerando che, con argomenti con nome, la sua molto più facile comprendo senza guardare la documentazione:

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 
+1

Inoltre, se ci sono più di un argomenti con nome, possiamo passare in qualsiasi ordine – Pankaj

+1

Grazie per il riferimento MSDN ho ottenuto quello che voglio a k ora che gli argomenti denominati ti liberano dalla necessità di ricordare o di cercare l'ordine dei parametri nelle liste dei parametri dei metodi chiamati, posso chiamare il mio parametro in qualsiasi ordine è il vantaggio principale. Accetterà la tua risposta al termine del tempo limite – Mohit