0Pricing
C# Academy · Lekcja

Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie

Definiuj sygnatury metod i wartości zwracane, używaj metod expr-bodied, parametrów opcjonalnych i nazwanych oraz ref/out, a także poznaj przeciążanie. Uwaga: C# 6 nie obsługuje funkcji lokalnych.

Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 1 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.

Podstawy metod

Cel: definiować przejrzyste metody, określając sygnaturę (nazwę, parametry i typ zwracany), zwięzłe ciało oraz przewidywalne działanie.

  • Wartości zwracane
  • Metody z ciałem wyrażeniowym
  • Parametry opcjonalne i nazwane

Sygnatury i wartości zwracane

Metoda ma nazwę, parametry i typ zwracany. Nazwy powinny być jasne, a metody skoncentrowane na jednym zadaniu.

using System;

public class MathUtil
{
  // Signature: name Add, parameters (int a, int b), return int
  public static int Add(int a, int b)
  {
    return a + b;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    int s = MathUtil.Add(2, 3);
    Console.WriteLine("Sum = " + s);
  }
}

Metody z ciałem wyrażeniowym

Metody z ciałem wyrażeniowym używają => w małych i przejrzystych metodach pomocniczych.

using System;

public static class FormatUtil
{
  // Expression-bodied method (C# 6): concise one-liner
  public static string Greet(string name) => "Hello, " + name + "!";
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine(FormatUtil.Greet("Ada"));
  }
}

Parametry opcjonalne i nazwane

Parametrów opcjonalnych należy używać do określania rozsądnych wartości domyślnych, a argumentów nazwanych — dla większej jasności w miejscu wywołania.

using System;

public static class Logger
{
  // Optional parameter: times has a default
  public static void Log(string message, int times = 1)
  {
    for (int i = 0; i < times; i = i + 1)
    {
      Console.WriteLine(message);
    }
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Logger.Log("One time");                 // uses default
    Logger.Log(message: "Twice", times: 2); // named arguments
  }
}

Podstawy ref i out

ref: zmienna musi mieć przypisaną wartość przed wywołaniem. out: metoda musi przypisać wartość przed zwróceniem.

using System;

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

  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 n = 10;
    RefOutDemo.Increment(ref n);
    Console.WriteLine("n = " + n); // 11

    int r;
    bool ok = RefOutDemo.TryDivide(9, 0, out r);
    Console.WriteLine("ok=" + ok + " r=" + r);
  }
}

Przeciążanie i uwaga

Przeciążanie pozwala używać jednej nazwy dla powiązanych operacji. Uwaga: funkcje lokalne pojawiły się w późniejszych wersjach C#; w C# 6 należy używać małych prywatnych metod pomocniczych.

using System;

public static class Calc
{
  // Overloads: same name, different parameter lists
  public static int Area(int side) { return side * side; }
  public static int Area(int width, int height) { return width * height; }

  // C# 6 has no local functions; use private helpers instead.
  private static int DoubleIt(int x) { return x + x; }

  public static int TwiceArea(int side)
  {
    int a = Area(side);
    return DoubleIt(a);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine("Area square 3 = " + Calc.Area(3));
    Console.WriteLine("Area rect 3x4 = " + Calc.Area(3, 4));
    Console.WriteLine("Twice area of 3 = " + Calc.TwiceArea(3));
  }
}

Zasada ref i out

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

Podsumowanie

Podsumowanie: należy projektować jasne sygnatury i wartości zwracane oraz tworzyć małe metody pomocnicze z ciałem wyrażeniowym; dla czytelności warto używać parametrów opcjonalnych i nazwanych; należy znać różnicę między ref i out oraz ostrożnie przeciążać metody. Funkcje lokalne pojawiły się w późniejszych wersjach C# — w C# 6 należy używać prywatnych metod pomocniczych.

Często zadawane pytania

Czy lekcja „Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie” jest bezpłatna?

Tak — pełny tekst „Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie” 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 „Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie”?

Definiuj sygnatury metod i wartości zwracane, używaj metod expr-bodied, parametrów opcjonalnych i nazwanych oraz ref/out, a także poznaj przeciążanie. Uwaga: C# 6 nie obsługuje funkcji lokalnych. Ć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 1 z 3.

Ile czasu zajmuje lekcja „Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie”?

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