Menu
Coddy logo textTech

Słowo kluczowe „params”

Część sekcji Programowanie obiektowe ścieżki C# w Coddy. Lekcja 47 z 70.

Słowo kluczowe params pozwala metodzie przyjmować zmienną liczbę argumentów tego samego typu. Zamiast wymagać od wywołujących ręcznego utworzenia tablicy, mogą oni przekazywać argumenty bezpośrednio, oddzielając je przecinkami.

Umieść params przed parametrem tablicowym w sygnaturze metody:

public static int Sum(params int[] numbers)
{
    int total = 0;
    foreach (int n in numbers)
        total += n;
    return total;
}

// Wszystkie te wywołania działają
Console.WriteLine(Sum(1, 2));           // 3
Console.WriteLine(Sum(1, 2, 3, 4, 5));  // 15
Console.WriteLine(Sum());               // 0 (pusta tablica)

Kompilator automatycznie umieszcza argumenty w tablicy. Możesz też bezpośrednio przekazać istniejącą tablicę, jeśli już ją masz:

int[] values = { 10, 20, 30 };
Console.WriteLine(Sum(values));  // 60

Warto pamiętać o kilku zasadach: metoda może mieć tylko jeden parametr params i musi on być ostatnim parametrem na liście. Możesz łączyć go ze zwykłymi parametrami:

public static void Log(string prefix, params object[] items)
{
    foreach (var item in items)
        Console.WriteLine(prefix + item);
}

Log("Item: ", "Apple", 42, true);

Słowo kluczowe params sprawia, że interfejsy API są bardziej elastyczne i przyjazne dla wywołujących, dlatego można je znaleźć w metodach takich jak Console.WriteLine i string.Format.

challenge icon

Wyzwanie

Łatwy

Zbudujmy elastyczny formater wiadomości, który używa słowa kluczowego params, aby obsługiwać dowolną liczbę wartości. Utworzysz klasę narzędziową, która może formatować wiadomości z argumentami o zmiennej liczbie, demonstrując, jak params zwiększa wszechstronność metod i ułatwia ich wywoływanie.

Rozmieścisz swój kod w dwóch plikach:

  • MessageFormatter.cs: Utwórz klasę MessageFormatter w przestrzeni nazw Formatting z dwiema metodami używającymi params:
    • Combine(params string[] parts) — łączy wszystkie podane ciągi znaków, wstawiając między nimi spację, i zwraca wynik
    • FormatList(string label, params int[] numbers) — łączy zwykły parametr z tablicą params. Powinna zwracać etykietę, po której następuje dwukropek, a następnie wszystkie liczby oddzielone przecinkami (np. Scores: 85, 90, 78)
  • Program.cs: W głównym pliku zademonstruj działanie obu metod na danych wejściowych. Wczytaj ciąg znaków z etykietą, a następnie wczytaj wiersz liczb całkowitych oddzielonych przecinkami. Użyj Combine, aby połączyć trzy ustalone słowa, a następnie użyj FormatList, aby wyświetlić etykietę wraz z liczbami.

Otrzymasz dwa dane wejściowe:

  • Ciąg znaków z etykietą (np. Scores)
  • Lista liczb całkowitych oddzielonych przecinkami (np. 85,90,78,92)

Najpierw wywołaj Combine ze słowami "Hello", "params" i "world!", a następnie wypisz wynik. Potem przekształć liczby całkowite oddzielone przecinkami w tablicę i wywołaj FormatList, przekazując etykietę i tablicę liczb całkowitych. Wypisz również ten wynik.

Na przykład, jeśli danymi wejściowymi są Scores i 85,90,78, wynikiem powinno być:

Hello params world!
Scores: 85, 90, 78

Zwróć uwagę, że Combine przyjmuje bezpośrednio dowolną liczbę ciągów znaków, a FormatList pokazuje, że możesz łączyć zwykłe parametry z params — parametr params musi po prostu znajdować się na końcu. Możesz też przekazać istniejącą tablicę do metody z parametrem params, co właśnie zrobisz z przekształconymi liczbami całkowitymi!

Spróbuj swoich sił

using System;
using Formatting;

class Program
{
    public static void Main(string[] args)
    {
        // Wczytaj dane wejściowe
        string label = Console.ReadLine();
        string numbersInput = Console.ReadLine();
        
        // TODO: Użyj MessageFormatter.Combine z "Hello", "params" i "world!"
        // i wypisz wynik
        
        
        // TODO: Przekształć liczby całkowite oddzielone przecinkami w tablicę int
        // Wskazówka: Podziel ciąg znaków i przekonwertuj każdą część na int
        
        
        // TODO: Użyj MessageFormatter.FormatList z label i tablicą int
        // i wypisz wynik
        
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C# online