Tablice w C#: Jak edytować element tablicy?
Do tej pory pokazywaliśmy dwa podstawowe sposoby pracy z tablicami w C#:
- wyliczanie wszystkich elementów (np. w pętli),
- wyszukiwanie elementu według indeksu.
Teraz pora na edycję tablicy – czyli zmianę wartości wybranego elementu.
Przykład: poprawa błędu w tablicy miesięcy
Załóżmy, że mamy tablicę miesięcy, ale jeden z elementów został wpisany błędnie:
string[] monthsOfYear = {
"January",
"Febrry", // Błąd w nazwie
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
};
“Febrry” – Nie Tak pisze się luty!
Zobaczmy, jak możemy to naprawić za pomocą kodu C#. Aby zmodyfikować istniejący element, musimy znać jego indeks. Ponieważ tablice są indeksowane od zera, drugi element ma indeks 1. Użyjemy tej wiedzy, aby przypisać nową, poprawną wartość.
// Poprawiamy wartość elementu o indeksie 1
monthsOfYear[1] = „February”;
To wszystko! Wartość została podmieniona. Aby zweryfikować, czy zmiana została poprawnie zapisana, możemy wyświetlić całą zawartość tablicy za pomocą pętli foreach
.
// Weryfikacja
Console.WriteLine("Zawartość tablicy po poprawieniu błędu:");
foreach (var month in monthsOfYear)
{
Console.WriteLine(month);
}
Dlaczego indeks 1?
- W C# tablice są indeksowane od zera.
- Pierwszy element ma indeks
0
→"January"
. - Drugi element ma indeks
1
→"February"
.
Dzięki temu możemy zarówno odczytywać elementy tablicy, jak i nadpisywać ich wartości za pomocą operatora indeksu ([]
).
Sprawdzenie wyniku
Po poprawce możemy wypisać całą tablicę w konsoli:
foreach (var month in monthsOfYear)
{
Console.WriteLine(month);
}
W ten sposób zmodyfikowaliśmy element w tablicy.
Kluczowe informacje do zapamiętania
- Operator indeksu
[]
w tablicach służy zarówno do odczytu, jak i zapisu. - Tablice w C# są indeksowane od zera.
- Nadpisanie elementu zmienia dane w tej samej tablicy – nie tworzymy nowej kolekcji.
- Tablice mają stałą długość – możemy zmieniać wartości istniejących elementów, ale nie możemy dodać nowego bez stworzenia nowej tablicy.
Najważniejsze ograniczenie tablic: Stały rozmiar ⚠️
Teraz dochodzimy do kluczowej kwestii. Zmodyfikowaliśmy istniejący element, ale co, jeśli chcielibyśmy dodać trzynasty miesiąc albo usunąć jeden z istniejących?
To niemożliwe. Tablice w C# mają stały, niezmienny rozmiar.
Oznacza to, że po utworzeniu tablicy (np. o rozmiarze 12), nie można jej w żaden sposób rozszerzyć ani skurczyć. Operacje takie jak Add
(dodaj) czy Remove
(usuń) nie istnieją dla tablic.
Dlaczego tak jest?
Gdy tworzysz tablicę, system operacyjny rezerwuje dla niej w pamięci jeden, ciągły blok o określonej wielkości. Taka struktura sprawia, że dostęp do dowolnego elementu przez indeks jest niezwykle szybki. Zmiana rozmiaru wymagałaby znalezienia nowego, większego bloku pamięci i przekopiowania do niego wszystkich istniejących danych, co jest operacją kosztowną i zaprzecza idei prostej i wydajnej struktury, jaką ma być tablica.
Co jeśli potrzebuję dynamicznej kolekcji? Użyj List<T>!
W prawdziwym świecie programowania bardzo często potrzebujemy kolekcji, których rozmiar może się zmieniać. Do tego celu w C# służy obiekt List<T>
.
Lista jest bardziej elastyczną strukturą danych, która pozwala na swobodne dodawanie i usuwanie elementów.
Krótkie porównanie:
- Tablica (
string[]
): Stały rozmiar, bardzo szybki dostęp do elementów. Idealna, gdy znasz dokładną liczbę elementów z góry. - Lista (
List<string>
): Dynamiczny rozmiar, łatwe dodawanie i usuwanie. Idealna, gdy liczba elementów będzie się zmieniać w trakcie działania programu.
Podsumowanie
- Modyfikacja jest możliwa: Możesz zmienić wartość istniejącego elementu, używając składni
nazwaTablicy[indeks] = nowaWartosc;
. - Rozmiar jest stały: Nie możesz dodać nowego elementu ani usunąć istniejącego, aby zmienić rozmiar tablicy.
- Szybkość vs. Elastyczność: Tablice są szybkie, ale nieelastyczne pod względem rozmiaru.
- Potrzebujesz elastyczności?: Użyj
List<T>
, która została stworzona do obsługi dynamicznie zmieniających się zbiorów danych. - Zobaczyliśmy, jak działa operator indeksu po lewej stronie przypisania.
- Wypisaliśmy tablicę w pętli, aby potwierdzić działanie kodu.
👉 Chcesz dowiedzieć się więcej o kolekcjach w C# (tablice, listy, kolejki, stosy, słowniki)?
Sprawdź praktyczny kurs: https://dev-hobby.pl/kursy/c-wprowadzenie-do-kolekcji/
Zapamiętaj.
Dostęp do elementów tablicy jest możliwy dzięki operatorowi indeksu.