Ricerca…


Osservazioni

Argomenti nominati

Rif: MSDN Gli argomenti con nome consentono di specificare un argomento per un particolare parametro associando l'argomento al nome del parametro anziché con la posizione del parametro nell'elenco dei parametri.

Come detto da MSDN, un argomento con nome,

  • Consente di passare l'argomento alla funzione associando il nome del parametro.
  • Non c'è bisogno di ricordare la posizione dei parametri che non siamo a conoscenza di sempre.
  • Non c'è bisogno di guardare l'ordine dei parametri nella lista dei parametri della funzione chiamata.
  • Possiamo specificare il parametro per ogni argomento in base al suo nome.

Argomenti opzionali

Rif: MSDN La definizione di un metodo, costruttore, indicizzatore o delegato può specificare che i suoi parametri sono obbligatori o che sono facoltativi. Ogni chiamata deve fornire argomenti per tutti i parametri richiesti, ma può omettere argomenti per i parametri facoltativi.

Come detto da MSDN, un argomento facoltativo,

  • Possiamo omettere l'argomento nella chiamata se tale argomento è un argomento facoltativo
  • Ogni argomento facoltativo ha il proprio valore predefinito
  • Prenderà il valore predefinito se non forniamo il valore
  • Un valore predefinito di un argomento facoltativo deve essere a
    • Espressione costante
    • Deve essere un tipo di valore come enum o struct.
    • Deve essere un'espressione di default del modulo (valueType)
  • Deve essere impostato alla fine dell'elenco dei parametri

Argomenti nominati

Considera che seguire è la nostra chiamata di funzione.

FindArea(120, 56);

In questo il nostro primo argomento è la lunghezza (cioè 120) e il secondo argomento è larghezza (cioè 56). E stiamo calcolando l'area con quella funzione. E di seguito è la definizione della funzione.

private static double FindArea(int length, int width)
       {
           try
           {
               return (length* width);
           }
           catch (Exception)
           {
               throw new NotImplementedException();
           }
       }

Quindi nella prima chiamata di funzione, abbiamo appena passato gli argomenti per la sua posizione. Destra?

double area;
Console.WriteLine("Area with positioned argument is: ");
area = FindArea(120, 56);
Console.WriteLine(area);
Console.Read();

Se lo esegui, otterrai un output come segue.

inserisci la descrizione dell'immagine qui

Ora ecco le caratteristiche di un argomento con nome. Si prega di consultare la chiamata alla funzione precedente.

Console.WriteLine("Area with Named argument is: ");
area = FindArea(length: 120, width: 56);
Console.WriteLine(area);
Console.Read();

Qui stiamo dando gli argomenti nominati nella chiamata al metodo.

area = FindArea(length: 120, width: 56);

Ora se si esegue questo programma, si otterrà lo stesso risultato. Possiamo dare i nomi vice versa nella chiamata al metodo se stiamo usando gli argomenti con nome.

Console.WriteLine("Area with Named argument vice versa is: ");
area = FindArea(width: 120, length: 56);
Console.WriteLine(area);
Console.Read();

Uno degli usi importanti di un argomento con nome è che quando lo usi nel tuo programma migliora la leggibilità del tuo codice. Dice semplicemente quale dovrebbe essere la tua argomentazione o cosa è?

Puoi anche dare gli argomenti posizionali. Ciò significa, una combinazione di entrambi gli argomenti posizionali e argomento con nome.

Console.WriteLine("Area with Named argument Positional Argument : ");
            area = FindArea(120, width: 56);
            Console.WriteLine(area);
            Console.Read();

Nell'esempio precedente abbiamo passato 120 come lunghezza e 56 come argomento con nome per la larghezza del parametro.

Ci sono anche alcune limitazioni. Discuteremo la limitazione di un argomento chiamato ora.

Limitazione dell'uso di un argomento con nome

La specifica dell'argomento con nome deve apparire dopo che sono stati specificati tutti gli argomenti fissi.

Se si usa un argomento con nome prima di un argomento fisso, si otterrà un errore in fase di compilazione come segue.

inserisci la descrizione dell'immagine qui

La specifica dell'argomento con nome deve apparire dopo che sono stati specificati tutti gli argomenti fissi

Argomenti opzionali

Considerare precedente è la nostra definizione di funzione con argomenti opzionali.

private static double FindAreaWithOptional(int length, int width=56)
       {
           try
           {
               return (length * width);
           }
           catch (Exception)
           {
               throw new NotImplementedException();
           }
       }

Qui abbiamo impostato il valore per width come facoltativo e abbiamo dato valore come 56. Se si nota, lo stesso IntelliSense mostra l'argomento opzionale come mostrato nell'immagine sottostante.

inserisci la descrizione dell'immagine qui

Console.WriteLine("Area with Optional Argument : ");
area = FindAreaWithOptional(120);
Console.WriteLine(area);
Console.Read();

Nota che non abbiamo ricevuto alcun errore durante la compilazione e ti forniremo un output come segue.

inserisci la descrizione dell'immagine qui

Utilizzando l'attributo opzionale.

Un altro modo per implementare l'argomento facoltativo è utilizzare la parola chiave [Optional] . Se non si passa il valore per l'argomento facoltativo, il valore predefinito di tale tipo di dati viene assegnato a tale argomento. La parola chiave Optional è presente nello spazio dei nomi "Runtime.InteropServices".

using System.Runtime.InteropServices;  
private static double FindAreaWithOptional(int length, [Optional]int width)
   {
       try
       {
           return (length * width);
       }
       catch (Exception)
       {
           throw new NotImplementedException();
       }
   } 

area = FindAreaWithOptional(120);  //area=0

E quando chiamiamo la funzione, otteniamo 0 perché il secondo argomento non viene passato e il valore predefinito di int è 0 e quindi il prodotto è 0.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow