Typ Index i operator ^
Odwołuj się do elementów od końca kolekcji.
Typ Index i operator ^ to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 1 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.
Poznaj typ Index
C# udostępnia dedykowany typ System.Index do opisywania pozycji w sekwencji. W przeciwieństwie do zwykłego typu int obiekt typu Index może reprezentować pozycję liczoną od końca kolekcji, a nie tylko od jej początku.
Dzięki temu kod w rodzaju "podaj mi ostatni element" jest czytelny i bezpieczny.
using System;
int[] numbers = { 10, 20, 30, 40, 50 };
Index first = 0;
Console.WriteLine(numbers[first]); // 10Operator ^ (od końca)
Operator daszka ^ tworzy obiekt Index liczący od końca. ^1 oznacza ostatni element, ^2 — przedostatni, i tak dalej.
Należy pamiętać, że ^1 oznacza ostatni prawidłowy indeks, natomiast ^0 jest równe Length i wskazuje pozycję za końcem.
using System;
int[] numbers = { 10, 20, 30, 40, 50 };
Console.WriteLine(numbers[^1]); // 50 (last)
Console.WriteLine(numbers[^2]); // 40Index jako wartość pierwszej klasy
Obiekt Index jest rzeczywistą wartością, którą można przechowywać w zmiennej, przekazywać do metod i ponownie wykorzystywać. Pozwala to oddzielić pozycję od kolekcji.
using System;
int[] data = { 1, 2, 3, 4, 5 };
Index last = ^1;
Index secondLast = ^2;
Console.WriteLine(data[last]); // 5
Console.WriteLine(data[secondLast]); // 4IsFromEnd i Value
Każdy obiekt Index udostępnia dwie właściwości: Value (przesunięcie całkowite) oraz IsFromEnd (informację, czy został utworzony za pomocą ^).
using System;
Index fromStart = 2;
Index fromEnd = ^2;
Console.WriteLine(fromStart.Value + " " + fromStart.IsFromEnd); // 2 False
Console.WriteLine(fromEnd.Value + " " + fromEnd.IsFromEnd); // 2 TrueGetOffset wyznacza pozycję
Indeks liczony od końca ma znaczenie dopiero po poznaniu długości kolekcji. Index.GetOffset(length) przekształca go w konkretne przesunięcie liczone od zera.
using System;
Index fromEnd = ^1;
int length = 5;
int offset = fromEnd.GetOffset(length);
Console.WriteLine(offset); // 4^0 wskazuje pozycję za końcem
Ponieważ ^0 jest rozwijane do wartości Length, indeksowanie za jego pomocą kończy się wyjątkiem. Jest ono przydatne wyłącznie jako wyłączna górna granica zakresu, co zostanie pokazane w następnej lekcji.
using System;
int[] data = { 1, 2, 3 };
try {
Console.WriteLine(data[^0]); // out of range!
} catch (IndexOutOfRangeException) {
Console.WriteLine("^0 is past the end");
}Index działa z wieloma kolekcjami
Każdy typ wyposażony w indeksator oraz właściwość Length lub Count (i odpowiednią obsługę) może korzystać z Index. Tablice, string i Span<T> działają od razu.
using System;
string word = "Coddy";
Console.WriteLine(word[^1]); // y
Console.WriteLine(word[^5]); // CDynamiczne obliczanie indeksów
Obiekt Index można utworzyć z całkowitej wartości dostępnej w czasie działania, używając operatora ^ na zmiennej.
using System;
int[] data = { 5, 10, 15, 20 };
int n = 2;
Index idx = ^n; // ^ works on variables too
Console.WriteLine(data[idx]); // 15Index a zwykły int
Zwykły int zawsze liczy od początku. Index dodaje możliwość liczenia od końca, a jednocześnie pozwala na niejawną konwersję z int, dzięki czemu istniejący kod nadal działa.
using System;
Index a = 1; // implicit from int
Index b = ^1; // from end
Console.WriteLine(a.IsFromEnd); // False
Console.WriteLine(b.IsFromEnd); // TrueUnikanie błędów o jeden
Aby uzyskać ostatni element, wcześniej trzeba było użyć wyrażenia arr[arr.Length - 1]. Dzięki ^1 intencja jest wyraźna i nie ma ryzyka pomyłki w obliczeniach.
using System;
int[] scores = { 88, 92, 79, 95 };
Console.WriteLine(scores[scores.Length - 1]); // old way: 95
Console.WriteLine(scores[^1]); // new way: 95Index w rzeczywistym kodzie
Oto mały pomocnik, który zwraca ostatni element dowolnej tablicy za pomocą ^1, zachowując przejrzystość miejsca wywołania.
using System;
static T Last<T>(T[] items) => items[^1];
int[] nums = { 3, 6, 9, 12 };
Console.WriteLine(Last(nums)); // 12Szybkie sprawdzenie
Należy sprawdzić swoją wiedzę o typie Index i operatorze ^.
Podsumowanie
Dowiedzieli się Państwo, że System.Index reprezentuje pozycję, którą można liczyć od początku albo — za pomocą operatora ^ — od końca.
^1oznacza ostatni element, a^0jest równeLength(pozycja za końcem).Indexudostępnia właściwościValue,IsFromEndoraz metodęGetOffset(length).- Typ ten jest niejawnie konwertowany z
inti działa z tablicami, ciągami znaków oraz spanami.
Ucz się C# dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 93
- Lekcje
- 346
Często zadawane pytania
Czy lekcja „Typ Index i operator ^” jest bezpłatna?
Tak — pełny tekst „Typ Index i operator ^” 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 „Typ Index i operator ^”?
Odwołuj się do elementów od końca kolekcji. Ć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 4.
Ile czasu zajmuje lekcja „Typ Index i operator ^”?
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
- Typ Index i operator ^
- Typ Range i operator ..
- Zakresy z tablicami i ciągami znaków
- Niestandardowe typy obsługujące zakresy