Szukaj…


Uwagi

Nazwane argumenty

Ref: MSDN Nazwane argumenty umożliwiają określenie argumentu dla konkretnego parametru poprzez skojarzenie go z nazwą parametru, a nie z pozycją parametru na liście parametrów.

Jak powiedział MSDN, nazwany argument,

  • Umożliwia przekazanie argumentu do funkcji poprzez powiązanie nazwy parametru.
  • Nie ma potrzeby zapamiętywania pozycji parametrów, o której nie zawsze jesteśmy świadomi.
  • Nie trzeba szukać kolejności parametrów na liście parametrów wywoływanej funkcji.
  • Możemy podać parametr dla każdego argumentu według jego nazwy.

Opcjonalne argumenty

Odwołanie: MSDN Definicja metody, konstruktora, indeksatora lub delegata może określać, że jego parametry są wymagane lub że są opcjonalne. Każde wywołanie musi zawierać argumenty dla wszystkich wymaganych parametrów, ale może pomijać argumenty dla parametrów opcjonalnych.

Jak powiedział MSDN, Opcjonalny argument,

  • Możemy pominąć argument w wywołaniu, jeśli argument ten jest argumentem opcjonalnym
  • Każdy argument opcjonalny ma własną wartość domyślną
  • Przyjmie wartość domyślną, jeśli nie podamy tej wartości
  • Domyślna wartość argumentu opcjonalnego musi być
    • Stała ekspresja.
    • Musi być typem wartości, takim jak enum lub struct.
    • Musi być wyrażeniem domyślnej postaci (valueType)
  • Musi być ustawiony na końcu listy parametrów

Nazwane argumenty

Rozważ następujące wywołanie naszej funkcji.

FindArea(120, 56);

W tym naszym pierwszym argumentem jest długość (tj. 120), a drugim argumentem jest szerokość (tj. 56). I obliczamy powierzchnię według tej funkcji. Poniżej znajduje się definicja funkcji.

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

Tak więc w pierwszym wywołaniu funkcji przekazaliśmy argumenty według jego pozycji. Dobrze?

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

Jeśli to uruchomisz, otrzymasz wynik w następujący sposób.

wprowadź opis zdjęcia tutaj

Teraz pojawia się funkcja nazwanych argumentów. Zobacz poprzednie wywołanie funkcji.

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

Tutaj podajemy nazwane argumenty w wywołaniu metody.

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

Teraz, jeśli uruchomisz ten program, otrzymasz ten sam wynik. Możemy podać nazwy na odwrót w wywołaniu metody, jeśli używamy nazwanych argumentów.

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

Jednym z ważnych zastosowań nazwanego argumentu jest to, że gdy używasz go w swoim programie, poprawia to czytelność twojego kodu. Po prostu mówi, jaki ma być twój argument lub co to jest ?.

Możesz podać również argumenty pozycyjne. Oznacza to połączenie argumentu pozycyjnego i nazwanego.

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

W powyższym przykładzie przekazaliśmy 120 jako długość i 56 jako nazwany argument szerokości parametru.

Istnieją również pewne ograniczenia. Omówimy teraz ograniczenie nazwanych argumentów.

Ograniczenie używania argumentu nazwanego

Nazwana specyfikacja argumentu musi pojawić się po podaniu wszystkich ustalonych argumentów.

Jeśli użyjesz nazwanego argumentu przed stałym argumentem, otrzymasz błąd czasu kompilacji w następujący sposób.

wprowadź opis zdjęcia tutaj

Nazwana specyfikacja argumentu musi pojawić się po podaniu wszystkich ustalonych argumentów

Opcjonalne argumenty

Zastanów się, czy poprzednią jest nasza definicja funkcji z opcjonalnymi argumentami.

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

Tutaj ustawiliśmy wartość szerokości jako opcjonalną i podaliśmy wartość 56. Jeśli zauważysz, sam IntelliSense pokazuje opcjonalny argument, jak pokazano na poniższym obrazku.

wprowadź opis zdjęcia tutaj

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

Zauważ, że nie otrzymaliśmy żadnego błędu podczas kompilacji i da ci wynik w następujący sposób.

wprowadź opis zdjęcia tutaj

Korzystanie z opcjonalnego atrybutu.

Innym sposobem implementacji opcjonalnego argumentu jest użycie słowa kluczowego [Optional] . Jeśli nie podasz wartości opcjonalnego argumentu, wartość domyślna tego typu danych zostanie przypisana do tego argumentu. Optional słowo kluczowe występuje w przestrzeni nazw „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

A kiedy wywołujemy funkcję, otrzymujemy 0, ponieważ drugi argument nie jest przekazywany, a wartość domyślna int wynosi 0, a więc iloczyn wynosi 0.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow