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