C# Language
Argumenty nazwane i opcjonalne
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.
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.
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.
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.
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.