0Pricing
C# Academy · Lekcja

Wartości a referencje; literały; inferencja var; const/readonly

Dowiedz się, czym typy wartości różnią się od typów referencyjnych, jak działają literały i przyrostki liczbowe, kiedy używać var oraz jakie role pełnią const i readonly.

Wartości a referencje; literały; inferencja var; const/readonly 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.

Dlaczego typy mają znaczenie

Cel: zrozumieć różnice między typami wartościowymi i referencyjnymi oraz sposób działania zmiennych, literałów i stałych w codziennym kodzie.

Typ wartościowy a typ referencyjny

Typ wartościowy: podczas przypisania kopiuje dane, na przykład int, bool lub struct. Typ referencyjny: kopiuje odwołanie, na przykład class, array lub string.

  • Wartość: bezpieczniejsze zmiany lokalne
  • Referencja: współdzielona tożsamość obiektu

Literały i sufiksy

Literały mają typy. Dla większej jasności należy używać sufiksów: f (float), m (decimal), L (long).

  • 3.14f → float
  • 10m → decimal (pieniądze)
  • 123L → long

Wnioskowanie typu za pomocą var

var pozwala kompilatorowi wywnioskować typ na podstawie prawej strony przypisania. Należy używać go, gdy typ jest oczywisty; w przeciwnym razie warto określić typ jawnie.

const a readonly

const: stała określana na etapie kompilacji; readonly: wartość ustawiana w konstruktorze lub podczas deklaracji.

  • const należy stosować dla stałych wartości, na przykład Pi
  • readonly należy stosować dla wartości znanych dopiero w czasie działania

Typy w praktyce

W jednym małym programie można zobaczyć działanie typów wartościowych i referencyjnych, sufiksy liczbowe, proste wnioskowanie typu za pomocą var oraz użycie const i readonly.

using System;

// Value type (struct) copies by value
public struct PointS
{
  public int X;
  public int Y;
}

// Reference type (class) copies the reference
public class PointC
{
  public int X;
  public int Y;
}

// Readonly demo class
public class Config
{
  public readonly string Name;
  public Config(string name)
  {
    Name = name; // can set here
  }
}

public class Program
{
  // Compile-time constant
  private const double Pi = 3.14159;

  public static void Main(string[] args)
  {
    // 1) Value vs reference
    PointS a = new PointS { X = 1, Y = 2 };
    PointS b = a;         // copy value
    b.X = 99;
    Console.WriteLine("Value struct a.X = " + a.X); // 1 (unchanged)
    Console.WriteLine("Value struct b.X = " + b.X); // 99

    PointC ac = new PointC { X = 1, Y = 2 };
    PointC bc = ac;       // copy reference
    bc.X = 77;
    Console.WriteLine("Ref class ac.X = " + ac.X);  // 77 (same object)
    Console.WriteLine("Ref class bc.X = " + bc.X);  // 77

    // 2) Literals & suffixes
    float f = 3.14f;
    decimal price = 10m;
    long big = 123L;
    Console.WriteLine("f=" + f + " price=" + price + " big=" + big);

    // 3) var inference (type is obvious)
    var sum = a.X + a.Y; // int
    Console.WriteLine("sum=" + sum);

    // 4) const vs readonly
    Config cfg = new Config("Demo");
    Console.WriteLine("Pi=" + Pi + " Name=" + cfg.Name);
  }
}

Definicja typu wartościowego

Szybkie sprawdzenie: które stwierdzenie najlepiej opisuje typ wartościowy?

Podsumowanie

Podsumowanie: typy wartościowe kopiują dane, a typy referencyjne współdzielą obiekty. Należy używać sufiksów dla literałów liczbowych, var, gdy typ jest oczywisty, oraz odpowiednio wybierać między const i readonly.

Często zadawane pytania

Czy lekcja „Wartości a referencje; literały; inferencja var; const/readonly” jest bezpłatna?

Tak — pełny tekst „Wartości a referencje; literały; inferencja var; const/readonly” 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 „Wartości a referencje; literały; inferencja var; const/readonly”?

Dowiedz się, czym typy wartości różnią się od typów referencyjnych, jak działają literały i przyrostki liczbowe, kiedy używać var oraz jakie role pełnią const i readonly. Ć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 „Wartości a referencje; literały; inferencja var; const/readonly”?

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. Wartości a referencje; literały; inferencja var; const/readonly
  2. Operatory i wyrażenia: arytmetyczne, porównania i logiczne
  3. Przyrostki w praktyce; rzutowanie a konwersja; tworzenie obiektów w C# 6
← Powrót do C# Academy