0Pricing
C# Academy · Lekcja

Funkcje lokalne (uwaga dotycząca C# 6) i przeciążanie

Bezpiecznie przeciążaj metody (ta sama nazwa, różne parametry), a ponieważ C# 6 nie obsługuje funkcji lokalnych, zastępuj je małymi prywatnymi helperami.

Funkcje lokalne (uwaga dotycząca C# 6) i przeciążanie to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 3 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

Cel: Ponowne użycie jednej nazwy metody do powiązanych działań (przeciążanie). W języku C# 6 nie ma funkcji lokalnych; zamiast nich należy używać małych prywatnych metod pomocniczych.

Podstawy przeciążania

Przeciążenia mają wspólną nazwę, ale różnią się typami lub liczbą parametrów. Kompilator wybiera najlepiej pasujące przeciążenie.

using System;

public static class MathX
{
  public static int Sum(int a, int b) { return a + b; }
  public static double Sum(double a, double b) { return a + b; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine("Sum ints = " + MathX.Sum(2, 3));
    Console.WriteLine("Sum doubles = " + MathX.Sum(2.5, 3.1));
  }
}

Przeciążenia według arności

Zmiana arności (liczby parametrów) tworzy przejrzysty zestaw przeciążeń.

using System;

public static class Printer
{
  public static void Print(string text)
  {
    Console.WriteLine(text);
  }

  public static void Print(string text, int times)
  {
    for (int i = 0; i < times; i = i + 1)
    {
      Console.WriteLine(text);
    }
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Printer.Print("Hello");
    Printer.Print("Hi", 2);
  }
}

Zasada dotycząca typu zwracanego

Zasada: Sam typ zwracany nie może odróżniać przeciążeń. Aby utworzyć prawidłowe przeciążenie, należy zmienić typy, liczbę lub modyfikatory parametrów (np. ref/out).

Alternatywa dla funkcji lokalnych

W języku C# 6 nie ma funkcji lokalnych: należy wydzielić małą metodę private, aby zachować przejrzystość głównej metody.

using System;

// No local functions in C# 6: use a tiny private helper inside the class.
public class Report
{
  private static string Header(string title)
  {
    return "-- " + title + " --";
  }

  public static void Print(string title, string body)
  {
    Console.WriteLine(Header(title));
    Console.WriteLine(body);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Report.Print("Status", "All green");
  }
}

Rozwiązywanie przeciążeń

Kompilator wybiera najlepiej pasujące przeciążenie z zestawu. Jeśli wywołania są niejednoznaczne, należy dodać rzutowanie albo zmienić sygnatury.

using System;

public static class Formatter
{
  public static string Format(int n) { return "N=" + n; }
  public static string Format(string s) { return "S=" + s; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine(Formatter.Format(5));       // picks int overload
    Console.WriteLine(Formatter.Format("hello")); // picks string overload

    // Avoid ambiguity: cast when needed
    Console.WriteLine(Formatter.Format((int)3));
  }
}

Zasada przeciążania

Szybkie sprawdzenie: Które stwierdzenie dotyczące przeciążania metod w języku C# jest prawdziwe?

Podsumowanie

Podsumowanie: Zestawy przeciążeń należy tworzyć przez zmianę typów lub liczby parametrów, a nie typu zwracanego. W języku C# 6 funkcje lokalne należy zastępować małymi prywatnymi metodami pomocniczymi, aby zachować przejrzystość metod.

Często zadawane pytania

Czy lekcja „Funkcje lokalne (uwaga dotycząca C# 6) i przeciążanie” jest bezpłatna?

Tak — pełny tekst „Funkcje lokalne (uwaga dotycząca C# 6) i 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 „Funkcje lokalne (uwaga dotycząca C# 6) i przeciążanie”?

Bezpiecznie przeciążaj metody (ta sama nazwa, różne parametry), a ponieważ C# 6 nie obsługuje funkcji lokalnych, zastępuj je małymi prywatnymi helperami. Ć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 3 z 3.

Ile czasu zajmuje lekcja „Funkcje lokalne (uwaga dotycząca C# 6) i 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