0Pricing
C# Academy · Lekcja

Parametry opcjonalne i nazwane; ref/out/in (podstawy)

Używaj parametrów opcjonalnych i nazwanych argumentów dla większej czytelności; przekazuj przez referencję za pomocą ref; zwracaj dodatkowe wartości przez out; pamiętaj, że parametry in nie są dostępne w C# 6.

Parametry opcjonalne i nazwane; ref/out/in (podstawy) to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 2 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 3 lekcji w sumie.

Przegląd lekcji

Cel: Używanie parametrów opcjonalnych i nazwanych argumentów w celu zwiększenia czytelności oraz zrozumienie ref i out. Uwaga: parametry in nie są dostępne w języku C# 6.

Parametry opcjonalne

Należy dodawać wartości domyślne, aby umożliwić prostą konfigurację bez tworzenia wielu przeciążeń.

using System;

public static class Notifier
{
  // Optional parameter: suffix has a default value
  public static void Notify(string message, string suffix = "!")
  {
    Console.WriteLine(message + suffix);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Notifier.Notify("Saved");          // uses "!"
    Notifier.Notify("Warning", "!!");  // overrides default
  }
}

Nazwane argumenty

Nazwane argumenty sprawiają, że wywołania dokumentują się same, i umożliwiają bezpieczną zmianę kolejności argumentów.

using System;

public static class Greeter
{
  public static void Greet(string name, string prefix, int repeat)
  {
    for (int i = 0; i < repeat; i = i + 1)
    {
      Console.WriteLine(prefix + " " + name);
    }
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // Named args improve readability and allow reordering at call site
    Greeter.Greet(name: "Ada", prefix: "Hello", repeat: 2);
    Greeter.Greet(repeat: 1, name: "Alan", prefix: "Hi");
  }
}

Parametr ref

ref przekazuje zmienną przez referencję; wywołujący musi ją wcześniej zainicjalizować.

using System;

public static class RefDemo
{
  public static void Increment(ref int n)
  {
    n = n + 1; // modifies caller's variable
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    int value = 5;           // must be assigned before passing by ref
    RefDemo.Increment(ref value);
    Console.WriteLine("value = " + value); // 6
  }
}

Parametr out

out pozwala metodzie zwracać dodatkowe wartości za pośrednictwem parametrów; metoda musi je przypisać.

using System;

public static class OutDemo
{
  public static bool TryDivide(int a, int b, out int result)
  {
    if (b == 0)
    {
      result = 0;   // out must be assigned before return
      return false;
    }
    result = a / b;
    return true;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    int r; // not required to be assigned before passing as out
    bool ok = OutDemo.TryDivide(9, 0, out r);
    Console.WriteLine("ok=" + ok + " r=" + r);
  }
}

Informacje o "in" (C# 6)

Uwaga: parametry in (readonly, przekazywane przez referencję) pojawiły się w późniejszych wersjach języka C#. W języku C# 6 można:

  • Przekazywać małe typy przez wartość (kopię)
  • Używać ref tylko wtedy, gdy wymagana jest modyfikacja
  • Umownie oznaczać parametry metod jako readonly (nie przypisywać im ponownie wartości)

Podstawy ref i out

Szybkie sprawdzenie: Które stwierdzenie dotyczące ref i out jest prawdziwe w języku C# 6?

Podsumowanie

Podsumowanie: Parametrów opcjonalnych należy używać do określania wartości domyślnych, nazwanych argumentów — dla większej czytelności, ref — do modyfikowania danych wywołującego, a out — do zwracania dodatkowych wartości. Język C# 6 nie obsługuje parametrów in.

Często zadawane pytania

Czy lekcja „Parametry opcjonalne i nazwane; ref/out/in (podstawy)” jest bezpłatna?

Tak — pełny tekst „Parametry opcjonalne i nazwane; ref/out/in (podstawy)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Parametry opcjonalne i nazwane; ref/out/in (podstawy)”?

Używaj parametrów opcjonalnych i nazwanych argumentów dla większej czytelności; przekazuj przez referencję za pomocą ref; zwracaj dodatkowe wartości przez out; pamiętaj, że parametry in nie są dostęp… Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 3.

Ile czasu zajmuje lekcja „Parametry opcjonalne i nazwane; ref/out/in (podstawy)”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie
  2. Parametry opcjonalne i nazwane; ref/out/in (podstawy)
  3. Funkcje lokalne (uwaga dotycząca C# 6) i przeciążanie
← Powrót do C# Academy