Suche…


Bemerkungen

Benannte Argumente

Ref: MSDN Mit benannten Argumenten können Sie ein Argument für einen bestimmten Parameter angeben, indem Sie das Argument mit dem Namen des Parameters und nicht mit der Position des Parameters in der Parameterliste verknüpfen.

Wie von MSDN gesagt, ein benanntes Argument,

  • Ermöglicht die Übergabe des Arguments an die Funktion durch Zuordnen des Parameternamens.
  • Es ist nicht notwendig, sich an die Parameterposition zu erinnern, die uns nicht immer bekannt ist.
  • In der Parameterliste der aufgerufenen Funktion müssen Sie nicht nach der Reihenfolge der Parameter suchen.
  • Wir können Parameter für jedes Argument anhand seines Namens angeben.

Optionale Argumente

Ref: MSDN Die Definition einer Methode, eines Konstruktors, eines Indexers oder eines Delegaten kann angeben, dass seine Parameter erforderlich sind oder dass sie optional sind. Jeder Aufruf muss Argumente für alle erforderlichen Parameter bereitstellen, kann jedoch Argumente für optionale Parameter auslassen.

Wie von MSDN gesagt, ein optionales Argument,

  • Wir können das Argument in dem Aufruf weglassen, wenn dieses Argument ein optionales Argument ist
  • Jedes optionale Argument hat einen eigenen Standardwert
  • Es wird ein Standardwert verwendet, wenn wir den Wert nicht angeben
  • Ein Standardwert für ein optionales Argument muss a sein
    • Konstanter Ausdruck.
    • Muss ein Werttyp wie enum oder struct sein.
    • Muss ein Ausdruck des Formularvorschlags sein (valueType)
  • Sie muss am Ende der Parameterliste gesetzt werden

Benannte Argumente

Betrachten Sie folgendes ist unser Funktionsaufruf.

FindArea(120, 56);

In diesem Fall lautet unser erstes Argument Länge (dh 120) und das zweite Argument Breite (dh 56). Und wir berechnen die Fläche anhand dieser Funktion. Und das Folgende ist die Funktionsdefinition.

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

Beim ersten Funktionsaufruf haben wir die Argumente nur an ihrer Position übergeben. Recht?

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

Wenn Sie dies ausführen, erhalten Sie eine Ausgabe wie folgt.

Geben Sie hier die Bildbeschreibung ein

Hier kommen nun die Merkmale eines benannten Arguments. Bitte sehen Sie den vorhergehenden Funktionsaufruf.

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

Hier geben wir die benannten Argumente im Methodenaufruf an.

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

Wenn Sie dieses Programm ausführen, erhalten Sie dasselbe Ergebnis. Wir können die Namen beim Methodenaufruf umgekehrt angeben, wenn wir die genannten Argumente verwenden.

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

Wenn Sie ein benanntes Argument verwenden, wird die Lesbarkeit Ihres Codes verbessert, wenn Sie dieses in Ihrem Programm verwenden. Es sagt einfach, was dein Argument sein soll oder was es ist.

Sie können auch die Positionsargumente angeben. Das heißt, eine Kombination aus Positionsargument und benanntem Argument.

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

Im obigen Beispiel haben wir 120 als Länge und 56 als benanntes Argument für die Parameterbreite übergeben.

Es gibt auch einige Einschränkungen. Wir werden jetzt die Einschränkung eines benannten Arguments diskutieren.

Einschränkung der Verwendung eines benannten Arguments

Benannte Argumentspezifikationen müssen erscheinen, nachdem alle festen Argumente angegeben wurden.

Wenn Sie ein benanntes Argument vor einem festen Argument verwenden, wird ein Fehler beim Kompilieren wie folgt angezeigt.

Geben Sie hier die Bildbeschreibung ein

Benannte Argumentspezifikationen müssen erscheinen, nachdem alle festen Argumente angegeben wurden

Optionale Argumente

Betrachten wir als Vorgänger unsere Funktionsdefinition mit optionalen Argumenten.

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

Hier haben wir den Wert für width als optional festgelegt und als 56 angegeben. Wenn Sie beachten, zeigt der IntelliSense selbst das optionale Argument, wie in der folgenden Abbildung gezeigt.

Geben Sie hier die Bildbeschreibung ein

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

Beachten Sie, dass beim Kompilieren keine Fehler aufgetreten sind, und Sie erhalten eine Ausgabe wie folgt.

Geben Sie hier die Bildbeschreibung ein

Optionales Attribut verwenden.

Eine andere Möglichkeit, das optionale Argument zu implementieren, ist die Verwendung des Schlüsselworts [Optional] . Wenn Sie den Wert für das optionale Argument nicht übergeben, wird der Standardwert dieses Datentyps diesem Argument zugewiesen. Das Optional Schlüsselwort ist im Namespace "Runtime.InteropServices" vorhanden.

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

Wenn wir die Funktion aufrufen, erhalten wir 0, da das zweite Argument nicht übergeben wird und der Standardwert von int 0 ist. Daher ist das Produkt 0.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow