2012-08-10 11 views
5

Rozważmy następujący przykład metoda:C# - Jak pominąć parametry z wartościami domyślnymi?

public void MyMethod (string par1, bool par2 = "true", string par3="") 
{ 
} 

Teraz powiedzmy, że zadzwonię myMethod i ustawić wartość par3 do „IamString”.

Jak mogę to zrobić bez ustawienia wartości par2 na true lub false?

Po prostu chcę pozostawić wartość par2 na domyślną.

Pytam o tym, ponieważ w języku ActionScript Flasha jest możliwe, aby to zrobić za pomocą słowa kluczowego domyślne więc mogłem zadzwonić myMethod („someString” domyślne „IamString”) i par2 byłyby interpretowane jako prawda, która jest jego wartością domyślną. Zastanawiam się, czy jest to możliwe również w języku C#.

+1

wyboru http://stackoverflow.com/questions/4630444/how- to-skip-optional-parameters-in-c-sharp – Sandeep

+1

Nazwane argumenty: http://msdn.microsoft.com/en-us/library/dd264739.aspx – asawyer

+0

Dziękuję, Sandeep i prawnik, za referencje. – IneedHelp

Odpowiedz

11
public void MyMethod (string par1, bool par2 = "true", string par3=""){} 
Myclass.MyMethod(par1:"par1", par3:"par3"); 

Nawiasem mówiąc, to nie będzie działać: bool par2 = "true"

string par2 = "true"

lub

bool par2 = true

Mówiąc o wartości domyślnych, można również użyć tego, aby uzyskać wartość domyślną dla danego typu:

default(T)

+0

Dziękujemy! I tak, masz rację bool par2 = "true" nie zadziała. To błąd, który popełniłem próbując ułożyć prosty przykład. – IneedHelp

+0

Nie ma za co :-) Proszę nie zapomnieć oznaczyć żądanej odpowiedzi jako odpowiedzi :) – SeToY

+0

Tak, po prostu nie pozwala mi, ponieważ ostatnio edytowałeś swoją odpowiedź. Będę w stanie to zaakceptować za minutę. – IneedHelp

9

Można określić to wg nazwy parametru:

instance.MyMethod("Hello", par3:"bla"); 

Sprawdźcie here.

I jest kolejny błąd:

bool par2 = true 

jest poprawna ..

+0

Dziękuję również za odpowiedź. – IneedHelp

+0

Tak, bez problemu :) Tak to działa – tuxtimo

+0

Twoja odpowiedź jest równie przydatna dla SeToY's, ale przyjmuję jego, ponieważ zauważyłem ją jako pierwszą. Niemniej jednak, dziękuję i kciuki w górę! – IneedHelp

Powiązane problemy