Samouczek dotyczący tablicy C#: tworzenie, deklarowanie, inicjowanie

⚡ Inteligentne podsumowanie

Tablice C# przechowują zbiór elementów o stałym rozmiarze, które mają ten sam typ danych pod jedną nazwą zmiennej. Każdy element ma indeks liczony od zera, dzięki czemu deklarowanie, inicjowanie i uzyskiwanie dostępu do wartości jest szybkie i przewidywalne.

  • 📌 Definicja: Tablica przechowuje wiele wartości jednego typu w indeksowanych pozycjach, do których można dotrzeć za pomocą jednej zmiennej.
  • Deklaracja: Typ danych, po którym następują nawiasy kwadratowe i nazwa, deklaruje tablicę, na przykład wartości Int32[].
  • 🔢 Inicjalizacja: Nowe słowo kluczowe ustala rozmiar, następnie każdy indeks otrzymuje wartość, taką jak values[0]=1.
  • 🔍 Dostęp: Indeksowanie od zera odczytuje lub zapisuje dowolny element, więc pierwszym elementem jest values[0], a liczenie zaczyna się od 0.
  • 🔁 Iteracja: Pętla foreach przechodzi przez każdy element bez indeksu, co pozwala uniknąć błędów wyjścia poza zakres w przypadku większych tablic.
  • 🤖 Pomoc AI: GitHub Copilot generuje szablony tablicowe, podczas gdy ML.NET ładuje tablice numeryczne jako funkcje dla modeli uczenia maszynowego.

Tablice C#

Co to są tablice w języku C#?

Tablica służy do przechowywania kolekcji lub serii elementów. Elementy te będą tego samego typu.

Na przykład, jeśli masz tablicę wartości całkowitych, tablica może być zbiorem wartości takich jak [1, 2, 3, 4]. Tutaj liczba elementów tablicy wynosi 4.

Tablice są przydatne, gdy chcesz przechowywać kolekcję wartości tego samego typu. Zamiast więc deklarować a zmienna dla każdego elementu możesz po prostu zadeklarować jedną zmienną.

Zmienna ta będzie wskazywała tablicę lub listę elementów, które będą odpowiedzialne za przechowywanie elementów tablicy.

Przyjrzyjmy się, jak możemy pracować z tablicami w języku C#. W naszym przykładzie zadeklarujemy tablicę liczb całkowitych i odpowiednio z nimi będziemy pracować.

Należy zauważyć, że cały poniższy kod jest zapisywany w pliku Program.cs.

Krok 1) Deklarowanie tablicy – ​​Pierwszym krokiem jest zadeklarowanie tablicy. Zobaczmy, jak możemy to osiągnąć na poniższym przykładzie kodu.

Tablice w C#

Code Wyjaśnienie:-

  1. Pierwsza część to typ danych. Określa typ elementów używanych w tablicy. Zatem w naszym przypadku tworzymy tablicę liczb całkowitych.
  2. Druga część [ ], która określa rangę tablicy. (Ranga jest symbolem zastępczym, który określa liczbę elementów, które będzie zawierać tablica)
  3. Następna jest nazwa tablicy, która w naszym przypadku to „wartości”. Zauważ, że widzisz zielone, faliste podkreślenie, nie przejmuj się tym. To po prostu .Net mówiący, że zadeklarowałeś tablicę, ale nigdzie jej nie używasz.

Krok 2) Następnym krokiem jest inicjalizacja tablicy. Tutaj określimy liczbę wartości, które tablica będzie przechowywać. Zamierzamy także przypisać wartości do każdego elementu tablicy.

Tablice w C#

Code Wyjaśnienie:-

  1. Najpierw ustalamy liczbę elementów, które będzie zawierać tablica, na 3. Tak więc w nawiasach kwadratowych mówimy, że tablica będzie zawierać 3 elementy.
  2. Następnie przypisujemy wartości każdemu elementowi tablicy. Możemy to zrobić, określając nazwę zmiennej + pozycję indeksu w tablicy. Zatem values[0] oznacza, że ​​przechowujemy wartość na pierwszej pozycji tablicy. Podobnie, aby uzyskać dostęp do drugiej pozycji, używamy notacji values[1] i tak dalej.

Note: – W Arrays pozycja indeksu zaczyna się od 0.

Krok 3) Wyświetlmy teraz poszczególne elementy tablicy w konsoli. Aby to osiągnąć, dodajmy poniższy kod.

Tablice w C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32[] value;
   value=new Int32[3];
   
   value[0]=1;
   value[1]=2;
   value[2]=3;
   
   Console.WriteLine(value[0]);
   Console.WriteLine(value[1]);
   Console.WriteLine(value[2]);
    
   Console.ReadKey(); 
  }
 }
}

Code Wyjaśnienie:-

To jest prosta część, w której po prostu używamy metody Console.WriteLine, aby wysłać każdą wartość elementu do konsoli.

Zauważ, że ponownie uzyskujemy dostęp do każdego elementu za pomocą nazwy zmiennej tablicowej wraz z pozycją indeksu.

Jeżeli powyższy kod zostanie wpisany poprawnie i program zostanie uruchomiony, wyświetlony zostanie następujący komunikat.

Wyjście:

Tablice w C#

Na podstawie wyników można zobaczyć wszystkie wartości tablicy wyświetlane w konsoli.

Jak przejść przez tablicę C# za pomocą instrukcji foreach

Odczyt każdego elementu według indeksu działa, ale staje się żmudny, gdy tablica zawiera wiele wartości. Pętla foreach oferuje czystszy sposób przeglądania każdego elementu tablicy w kolejności bez… tracsamodzielnie utwórz zmienną indeksową.

Instrukcja foreach pobiera każdy element z tablicy pojedynczo i kopiuje go do zmiennej pętli. Następnie używa się tej zmiennej w ciele pętli. Ponieważ pętla zatrzymuje się automatycznie na ostatnim elemencie, instrukcja foreach eliminuje ryzyko odczytu poza koniec tablicy.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Int32[] values = new Int32[3] {1, 2, 3};
   foreach (Int32 item in values)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Powyższy przykład deklaruje i inicjuje tablicę trzech liczb całkowitych, a następnie przechodzi przez nią za pomocą foreach. W każdym przejściu zmienna pozycja Otrzymuje kolejną wartość, a Console.WriteLine ją drukuje. Na wyjściu pojawiają się liczby 1, 2 i 3 w osobnych wierszach.

Kluczowe punkty, które należy zapamiętać, stosując instrukcję foreach z tablicami:

  • Zmienna pętli jest przeznaczona tylko do odczytu, dlatego foreach jest najlepszym rozwiązaniem do odczytywania wartości, a nie do ich zmiany w miejscu.
  • Aby modyfikować elementy podczas wyszukiwaniaping, zamiast tego użyj pętli for z indeksem.
  • foreach działa z tablicami jednowymiarowymi, tablicami wielowymiarowymi i dowolnymi kolekcjami obsługującymi iterację.

Tablice wielowymiarowe w C#

Przedstawione dotychczas tablice są jednowymiarowe, co oznacza, że ​​przechowują prostą listę wartości. Język C# obsługuje również tablice wielowymiarowe, które układają elementy w siatce wierszy i kolumn. Tablica dwuwymiarowa jest najpopularniejszą formą i nadaje się do przechowywania danych takich jak macierze, plansze do gier i tabele.

Deklarację dwuwymiarowej tablicy uzyskuje się, umieszczając przecinek w nawiasach kwadratowych. Każdy dodatkowy przecinek dodaje kolejny wymiar, więc int[,] jest dwuwymiarowe, a int[,,] trójwymiarowe. Elementy są następnie osiągane z jednym indeksem na wymiar.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} };
   Console.WriteLine(matrix[0, 0]);
   Console.WriteLine(matrix[1, 1]);
   Console.ReadKey();
  }
 }
}

Tutaj macierz tablicy zawiera dwa wiersze i dwie kolumny. Element matrix[0, 0] zwraca wartość 1, a matrix[1, 1] zwraca wartość 4. Liczba wymiarów jest ustalona podczas deklarowania tablicy, a rozmiar każdego wymiaru jest ustawiany podczas tworzenia tablicy.

Tablice poszarpane w C#

Tablica poszarpana to tablica, której elementy same w sobie są tablicami. W przeciwieństwie do prostokątnej tablicy wielowymiarowej, każda wewnętrzna tablica może mieć inną długość, dlatego tablicę poszarpaną często nazywa się tablicą tablic. Ta elastyczność jest przydatna, gdy wiersze naturalnie zawierają różną liczbę wartości.

Deklarujesz tablicę nieregularną z dwoma zestawami nawiasów kwadratowych, a następnie tworzysz każdą tablicę wewnętrzną osobno. Poniższy przykład tworzy tablicę nieregularną, w której pierwszy wiersz zawiera trzy wartości, a drugi dwie.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[][] jagged = new int[2][];
   jagged[0] = new int[] {1, 2, 3};
   jagged[1] = new int[] {4, 5};
   Console.WriteLine(jagged[0][2]);
   Console.WriteLine(jagged[1][1]);
   Console.ReadKey();
  }
 }
}

Wyrażenie jagged[0][2] odczytuje trzeci element pierwszego wiersza, czyli 3, a jagged[1][1] odczytuje drugi element drugiego wiersza, czyli 5. Ponieważ każdy wiersz jest osobną tablicą, tablice jagged efektywnie wykorzystują pamięć, gdy długości wierszy się różnią, choć potrzebują dodatkowego kroku, aby zainicjować każdą wewnętrzną tablicę.

FAQ

Właściwość Length zwraca całkowitą liczbę elementów w tablicy C#. Na przykład values.Length zwraca 3 dla tablicy trzyelementowej. W przypadku tablic wielowymiarowych GetLength(dimension) zwraca rozmiar każdego konkretnego wymiaru.

Tablica AC# ma stały rozmiar ustawiany podczas tworzenia, podczas gdy lista rośnie i kurczy się dynamicznie. Tablice są szybsze w przypadku stałych danych i wymagają mniejszego narzutu, natomiast lista jest odpowiednia dla kolekcji, których liczba elementów zmienia się w czasie wykonywania.

Standardowa tablica C# przechowuje elementy jednego zadeklarowanego typu, więc mieszanie typów jest niedozwolone. Aby przechowywać różne typy, zadeklaruj tablicę object[] lub użyj kolekcji, takiej jak ArrayList, choć oba te rozwiązania obniżają bezpieczeństwo typów w czasie kompilacji.

Statyczna metoda Array.Sort porządkuje elementy tablicy C# w kolejności rosnącej. Przekaż tablicę do Array.Sort(values) i użyj Array.Reverse Następnie sortuj malejąco. Sortowanie działa na liczbach, ciągach znaków i innych podobnych typach.

Metoda Array.Copy duplikuje zakres elementów z jednej tablicy do drugiej, podczas gdy metoda Clone tworzy płytką kopię całej tablicy. Przypisanie jednej zmiennej tablicowej do innej powoduje skopiowanie tylko referencji, a nie elementów bazowych.

Wyjątek IndexOutOfRangeException występuje, gdy kod uzyskuje dostęp do pozycji tablicy, która nie istnieje, na przykład values[5] w tablicy trzyelementowej. Ponieważ tablice C# zaczynają się od zera, prawidłowe indeksy obejmują wartości od 0 do Length minus jeden. Zawsze najpierw sprawdź poprawność indeksu.

Tak. GitHub Copilot sugeruje deklaracje tablic, inicjalizację i logikę pętli z komentarza lub nazwy metody w programie Visual Studio i VS Code. RevPrzejrzyj każdą sugestię pod kątem prawidłowego rozmiaru i ograniczeń indeksu, ponieważ Copilot może wprowadzać błędy typu off-by-one i out-of-range.

ML.NET reprezentuje wektory cech i dane wejściowe modelu jako tablice C#, zazwyczaj typu float[]. Dane treningowe są ładowane do tablic lub zakresów, a prognozy zwracają tablice wyników. Stały rozmiar i szybkie indeksowanie tablic sprawiają, że są one wydajne w procesach uczenia maszynowego.

Podsumuj ten post następująco: