0Pricing
C# Academy · Lekcja

Klasy statyczne do celów pomocniczych

Grupuj funkcje pomocnicze w klasach statycznych.

Klasy statyczne do celów pomocniczych to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 2 z 4. 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 4 lekcji w sumie.

Czym jest klasa statyczna

Klasa statyczna jest deklarowana za pomocą static class. Może zawierać wyłącznie składowe statyczne i nie może być instancjonowana. Jest naturalnym miejscem na funkcje narzędziowe.

using System;

static class StringUtils
{
    public static string Shout(string s) => s.ToUpper() + "!";
}

class Program
{
    static void Main()
    {
        Console.WriteLine(StringUtils.Shout("hello"));
    }
}

Nie można tworzyć instancji

Nie używa się new w przypadku klasy statycznej. Cały dostęp odbywa się bezpośrednio za pośrednictwem nazwy klasy.

using System;

static class MathUtils
{
    public static int Cube(int x) => x * x * x;
}

class Program
{
    static void Main()
    {
        // No instance needed
        Console.WriteLine(MathUtils.Cube(3));
    }
}

Dozwolone są tylko składowe statyczne

Kompilator wymaga, aby każda składowa klasy statycznej była statyczna. Pola instancji ani konstruktory nie są dozwolone.

using System;

static class Temperature
{
    public static double ToFahrenheit(double c) => c * 9 / 5 + 32;
    public static double ToCelsius(double f) => (f - 32) * 5 / 9;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Temperature.ToFahrenheit(100));
        Console.WriteLine(Temperature.ToCelsius(32));
    }
}

Grupowanie powiązanych metod pomocniczych

Klasa statyczna grupuje funkcje związane z jednym obszarem tematycznym, zapewniając im przejrzystą przestrzeń nazw, na przykład Validation.IsEmail(...).

using System;

static class Validation
{
    public static bool IsPositive(int n) => n > 0;
    public static bool IsEmail(string s) => s.Contains("@") && s.Contains(".");
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Validation.IsPositive(5));
        Console.WriteLine(Validation.IsEmail("a@b.com"));
    }
}

Wbudowana klasa Math

Klasa Math platformy .NET jest klasą statyczną. Nie tworzy się jej instancji — wywołuje się po prostu Math.Sqrt, Math.Max i tak dalej.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine(Math.Max(3, 9));
        Console.WriteLine(Math.Sqrt(144));
        Console.WriteLine(Math.Round(3.14159, 2));
    }
}

Klasa statyczna z polami statycznymi

Klasa statyczna może zawierać pola statyczne przechowujące współdzielone stałe lub konfigurację używaną przez jej metody.

using System;

static class Pricing
{
    public static decimal Tax = 0.08m;

    public static decimal WithTax(decimal price) => price + price * Tax;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Pricing.WithTax(100m));
    }
}

Czyste funkcje

Metody narzędziowe najlepiej implementować jako czyste funkcje: wynik zależy wyłącznie od danych wejściowych i nie ma ukrytego stanu. Dzięki temu funkcje są przewidywalne i łatwe do testowania.

using System;

static class Geometry
{
    public static double RectArea(double w, double h) => w * h;
    public static double TriArea(double b, double h) => 0.5 * b * h;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Geometry.RectArea(4, 5));
        Console.WriteLine(Geometry.TriArea(6, 3));
    }
}

Komponowanie metod narzędziowych

Pomocnicze metody statyczne mogą wywoływać się nawzajem, budując większe operacje z mniejszych.

using System;

static class TextUtils
{
    public static string Clean(string s) => s.Trim().ToLower();
    public static string Slug(string s) => Clean(s).Replace(" ", "-");
}

class Program
{
    static void Main()
    {
        Console.WriteLine(TextUtils.Slug("  Hello World  "));
    }
}

Klasa statyczna a składowe statyczne w zwykłej klasie

Jeśli typ zawiera wyłącznie metody pomocnicze, należy uczynić całą klasę statyczną. Jeśli łączy metody pomocnicze z instancjami, należy pozostawić ją zwykłą klasą z niektórymi składowymi statycznymi.

using System;

static class Convert2
{
    public static int FeetToInches(int feet) => feet * 12;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Convert2.FeetToInches(3) + " inches");
    }
}

Ułatwianie znajdowania narzędzi

Metody pomocnicze należy grupować w dobrze nazwanych klasach statycznych (DateUtils, StringUtils), aby inni programiści mogli je łatwo znaleźć.

using System;

static class DateUtils
{
    public static bool IsWeekend(DayOfWeek d) =>
        d == DayOfWeek.Saturday || d == DayOfWeek.Sunday;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(DateUtils.IsWeekend(DayOfWeek.Sunday));
        Console.WriteLine(DateUtils.IsWeekend(DayOfWeek.Monday));
    }
}

Połączenie wszystkiego

Statyczne klasy narzędziowe centralizują bezstanową logikę pod przejrzystą nazwą, ograniczając duplikowanie kodu w całej bazie kodu.

using System;

static class MoneyUtils
{
    public static string Format(decimal amount) => "$" + amount.ToString("0.00");
    public static decimal ApplyDiscount(decimal price, double pct) =>
        price * (decimal)(1 - pct / 100);
}

class Program
{
    static void Main()
    {
        decimal discounted = MoneyUtils.ApplyDiscount(80m, 25);
        Console.WriteLine(MoneyUtils.Format(discounted));
    }
}

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat klas statycznych.

Podsumowanie

Klasa statyczna (static class X) nie może być instancjonowana i może zawierać wyłącznie składowe statyczne. Jest standardowym miejscem na bezstanowe funkcje narzędziowe i stałe, pogrupowane pod opisową nazwą. Wbudowana klasa Math jest dobrze znanym przykładem.

using System;

static class Util
{
    public static int Double(int n) => n * 2;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Util.Double(21));
    }
}

Często zadawane pytania

Czy lekcja „Klasy statyczne do celów pomocniczych” jest bezpłatna?

Tak — pełny tekst „Klasy statyczne do celów pomocniczych” 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 4 lekcji w sumie.

Co nauczysz się w „Klasy statyczne do celów pomocniczych”?

Grupuj funkcje pomocnicze w klasach statycznych. Ć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 4.

Ile czasu zajmuje lekcja „Klasy statyczne do celów pomocniczych”?

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. Metody i pola statyczne
  2. Klasy statyczne do celów pomocniczych
  3. Stałe i pola readonly
  4. Projektowanie statyczne a instancje
← Powrót do C# Academy