Wybieranie ilości podanych parametrów (argumentów) w metodzie

Wybieranie ilości podanych parametrów (argumentów) w metodzie
MP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

Cześć. Chciałem zapytać, czy w języku c# podczas tworzenia metod można tak zrobić, że np, można wprowadzić dziesięć argumentów (parametrów?):

Kopiuj
public void metoda_z_argumentami(int argument1, int argument2, int argument3, 
                                 int argument4, int argument5, int argument6, 
                                 int argument7, int argument8, int argument9,  int argument10)
{
 // tutaj już co się ma dziać z każdym argumentem (parametrem?)
}

I jeśli podczas tworzenia programu potrzebuję tylko trzy:

Kopiuj
metoda_z_argumentami(10,5, 15);

To pozostałe zmienne (w tym przypadku int argument 4-10) wypełnią się zerem? Można to jakoś w kodzie zrobić?

Jestem świadomy tego, że mogę zrobić tak:

Kopiuj
metoda_z_argumentami(10,5, 15, 0, 0, 0, 0, 0, 0, 0);

Ale przy argumencie z 30 metodami (i liczbami czterocyfrowymi) tego już się trochę robi więcej

Nie chciałbym tworzyć osobnych metod do ilości wprowadzanych argumentów (no chyba, że nie będzie wyboru)
Na chwilę obecną tak robię, a jeśli do metod gdzie mam wprowadzić 10 argumentów wprowadzę 9 to mi się pojawia błąd typu:

"There is no argument given that corresponds to the required formal parameter 'argument10' "

Dodam, że chodzi o środowisko visual studio 2015

Z góry dzięki za odpowiedź

marmite
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 69
1

Możesz użyć domyślnych wartości dla argumentów metody, np:

Kopiuj
public void  MetodaZArgumentami(int argument1, int argument2 = 0)
{
  //...
}

Zastanowiłbym się czy Twoja metoda nie powinna przyjmować tablicy intów.

MP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0
marmite napisał(a):

Możesz użyć domyślnych wartości dla argumentów metody, np:

Kopiuj
public void  MetodaZArgumentami(int argument1, int argument2 = 0)
{
  //...
}

Zastanowiłbym się czy Twoja metoda nie powinna przyjmować tablicy intów.

Tablica intów by była świetnym rozwiązaniem. Jeszcze nie próbowałem. Jak mogę taką metodę utworzyć? Wiem jak się tworzy tablice, np:

Kopiuj
int[] parametry = new int[29];

Jednak jak użyć tego w metodzie?

Jak wprowadzić domyślną wartość, jeśli kolejne argumenty nie będą miały podanej wartości (większych niż zero)?

marmite
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 69
1

Sprawa jest prosta:

Kopiuj
public void Method(int[] args)	
{
//
}
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
4

A nawet jeszcze prostsza jeśli się użyje: public void Method(params int[] args).

Akihito
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Śląsk
  • Postów: 248
2

Ja zadam inne pytanie, 10 argumentow w metodzie to okropna ilosc! Serio, nie powinienes uzywc jak ci pisali tablicy lub opakwoac to w obiekty? Czy tylko ja uwazam ze metody +10 argumentow to jakies popierdzielenie programowania i tworzenie potworow?

cerrato
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 9012
2

Pomijając Twoją opinię @Akihito, to Wujek Bob, który jest (bez urazy) większym autorytetem od Ciebie, w "Czystym kodzie" napisał coś w stylu (teraz piszę z pamięci bo nie mam książki pod ręką, więc pewnie lekko przekręcę, niemniej sens oddam):

Jeden argument jest spoko, 2 ujdą, 3 od biedy, a więcej oznacza, że coś jest skopane i jedynie w wyjątkowych sytuacjach takie rozwiązanie może być usprawiedliwione i dopuszczone.

Gworys
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 139
1
cerrato napisał(a):

Pomijając Twoją opinię @Akihito, to Wujek Bob, który jest (bez urazy) większym autorytetem od Ciebie, w "Czystym kodzie" napisał coś w stylu (teraz piszę z pamięci bo nie mam książki pod ręką, więc pewnie lekko przekręcę, niemniej sens oddam):

Jeden argument jest spoko, 2 ujdą, 3 od biedy, a więcej oznacza, że coś jest skopane i jedynie w wyjątkowych sytuacjach takie rozwiązanie może być usprawiedliwione i dopuszczone.

Ile widzicie parametrów i argumentów.?

Kopiuj
public int[] Method(params int[] args)
{
     return args;
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.