2011-01-07 23 views
33

Przykład:Jak pominąć opcjonalne parametry w C#?

public int foo(int x, int optionalY = 1, int optionalZ = 2) { ... } 

Chciałbym nazwać tak:

int returnVal = foo(5,,8); 

Innymi słowy, chcę zapewnić x i z, ale chcę użyć domyślnego dla Y, optionalY = 1.

Visual Studio nie lubi ,,

Proszę o pomoc.

Odpowiedz

50

Jeśli jest to C# 4.0, można użyć nazwany argumenty cecha:

foo(x: 5, optionalZ: 8); 

Zobacz this blog aby uzyskać więcej informacji.

+4

Dla rekordu, myślę, że dokładniej jest nazywać je nazwanymi * argumentami *. Parametry mają * zawsze * mają nazwy! –

+0

@Jon - dobre połączenie. –

+0

@Jon Zgadzam się, że miałoby to więcej sensu, ale dlaczego wszyscy (łącznie z linkami @Josiah i ja dostarczamy) użyli terminu o nazwie parametry? Używając Google jako porównania, "nazwane parametry" zwracają podwójnie wyniki "robi to nazwane argumenty" (przy użyciu cudzysłowu). – marcog

16

W języku C# 4.0 można wymienić argumenty występujące po pominiętych domyślnych, takich jak ten:

int returnVal = foo(5, optionalZ: 8); 

ten nazywany jest jako named arguments. Kilka innych języków zapewnia tę funkcję i często używają one składni foo(5, optionalZ=8), co jest przydatne przy czytaniu kodu w innych językach.

+2

@Ardman: Jeśli OP używa parametrów opcjonalnych do rozpoczęcia, musi używać C# 4 :) –

1

Innym dynamicznym sposobem dostarczania parametrów do wyboru jest implementacja metod w klasie i dostarczenie nazwanych parametrów do konstruktora klasy. Dlaczego nawet nie dodać wywołań metod na tej samej linii kodu, jak wspomniano tutaj: How to define named Parameters C#

var p = new PersonInfo {Name = "Piotr", wiek = 15} .BuildPerson();

Powiązane problemy