Výukový program C# Array: Vytvořit, deklarovat, inicializovat

⚡ Chytré shrnutí

Pole v C# ukládají kolekci prvků pevné velikosti, které sdílejí stejný datový typ, pod jedním názvem proměnné. Každý prvek je umístěn na indexu začínajícím na nule, takže deklarace, inicializace a přístup k hodnotám zůstává rychlý a předvídatelný.

  • 📌 Definice: Pole obsahuje více hodnot jednoho typu na indexovaných pozicích, které jsou dosaženy prostřednictvím jediné proměnné.
  • (Tj. Prohlášení: Datový typ následovaný hranatými závorkami a názvem deklaruje pole, například hodnoty Int32[].
  • 🔢 Inicializace: Klíčové slovo new nastavuje velikost a poté každý index obdrží hodnotu, například values[0]=1.
  • 🔍 Přístup: Indexování od nuly čte nebo zapisuje libovolný prvek, takže první položka je values[0] a počítání začíná od 0.
  • 🔁 Opakování: Smyčka foreach prochází každý prvek bez indexu, což zabraňuje chybám mimo rozsah u větších polí.
  • 🤖 Asistence AI: GitHub Copilot generuje standardizovanou verzi polí, zatímco ML.NET načítá číselná pole jako funkce pro modely strojového učení.

Pole v C#

Co je pole v C#?

Pole se používá k uložení kolekce nebo série prvků. Tyto prvky budou stejného typu.

Pokud byste tedy měli například pole celočíselných hodnot, pole by mohlo být sbírkou hodnot jako [1, 2, 3, 4]. Zde je počet prvků v poli 4.

Pole jsou užitečná, když chcete uložit kolekci hodnot stejného typu. Takže místo prohlášení a proměnlivý pro každý prvek můžete deklarovat pouze jednu proměnnou.

Tato proměnná bude ukazovat na pole nebo seznam prvků, které budou zodpovědné za ukládání prvků pole.

Podívejme se, jak můžeme pracovat s poli v C#. V našem příkladu deklarujeme pole celých čísel a podle toho s nimi budeme pracovat.

Všimněte si, že všechny níže uvedené kódy jsou vytvářeny v souboru Program.cs.

Krok 1) Deklarace pole – Prvním krokem je deklarace pole. Podívejme se, jak toho můžeme dosáhnout pomocí níže uvedeného příkladu kódu.

Pole v C#

Code Vysvětlení:-

  1. První část je datový typ. Určuje typ prvků použitých v poli. V našem případě tedy vytváříme pole celých čísel.
  2. Druhá část [ ], která určuje hodnost pole. (Hodnocení je zástupný symbol, který určuje počet prvků, které pole bude obsahovat)
  3. Dále je název pole, což je v našem případě 'hodnoty'. Všimněte si, že vidíte zelené klikaté podtržení, s tím si nedělejte starosti. To je jen to, že .Net říká, že jste deklarovali pole, ale nikde ho nepoužíváte.

Krok 2) Dalším krokem je inicializace pole. Zde určíme počet hodnot, které pole bude obsahovat. Chystáme se také přiřadit hodnoty každému prvku pole.

Pole v C#

Code Vysvětlení:-

  1. Nejprve nastavíme počet prvků, které pole pojme, na 3. V hranatých závorkách tedy říkáme, že pole pojme 3 prvky.
  2. Pak každému prvku pole přiřadíme hodnoty. Toho dosáhneme zadáním názvu proměnné + indexové pozice v poli. Takže values[0] znamená, že ukládáme hodnotu na první pozici pole. Podobně pro přístup k druhé pozici používáme notaci values[1] atd.

Hodnocení: – V polích začíná pozice indexu od 0.

Krok 3) Pojďme si nyní jednotlivé prvky pole zobrazit v Console. Abychom toho dosáhli, přidejte níže uvedený kód.

Pole v 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 Vysvětlení:-

Toto je jednoduchá část, ve které pouze použijeme metodu Console.WriteLine k odeslání každé hodnoty prvku do konzoly.

Všimněte si, že opět ke každému prvku přistupujeme pomocí názvu proměnné pole spolu s pozicí indexu.

Pokud je výše uvedený kód zadán správně a program je spuštěn, zobrazí se následující výstup.

Výstup:

Pole v C#

Z výstupu můžete vidět všechny hodnoty pole zobrazené v konzole.

Jak procházet polem v C# pomocí příkazu foreach

Čtení každého prvku podle jeho indexu funguje, ale stává se únavným, když pole obsahuje mnoho hodnot. Cyklus foreach nabízí čistší způsob, jak procházet každý prvek pole v pořadí bez... tracsami si můžete vytvořit indexovou proměnnou.

Příkaz foreach postupně bere jednotlivé prvky z pole a kopíruje je do proměnné smyčky. Tuto proměnnou pak použijete uvnitř těla smyčky. Protože se smyčka automaticky zastaví na posledním prvku, foreach eliminuje riziko čtení za konec pole.

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();
  }
 }
}

Výše uvedený příklad deklaruje a inicializuje pole tří celých čísel a poté jej prochází funkcí foreach. Při každém průchodu proměnná položka přijme další hodnotu a Console.WriteLine ji vytiskne. Výstupem jsou čísla 1, 2 a 3 na samostatných řádcích.

Klíčové body, které je třeba si zapamatovat o foreach s poli:

  • Proměnná cyklu je pouze pro čtení, takže foreach je nejlepší pro čtení hodnot, než pro jejich změnu na místě.
  • Úprava prvků během práce na toaletěping, použijte místo toho smyčku for s indexem.
  • Funkce foreach pracuje s jednorozměrnými poli, vícerozměrnými poli a jakoukoli kolekcí, která podporuje iteraci.

Vícerozměrná pole v C#

Dosud zobrazená pole jsou jednorozměrná, což znamená, že ukládají jednoduchý seznam hodnot. C# také podporuje vícerozměrná pole, která uspořádávají prvky do mřížky řádků a sloupců. Dvourozměrné pole je nejběžnější formou a hodí se pro data, jako jsou matice, herní desky a tabulky.

Dvourozměrné pole deklarujete umístěním čárky do hranatých závorek. Každá další čárka přidává další dimenzi, takže int[,] je dvourozměrné a int[,,] je trojrozměrné. Prvky jsou pak oslovovány s jedním indexem na dimenzi.

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();
  }
 }
}

Matice pole zde obsahuje dva řádky a dva sloupce. Prvek matrix[0, 0] vrací 1 a matrix[1, 1] vrací 4. Počet dimenzí je pevně stanoven při deklaraci pole, zatímco velikost každé dimenze je nastavena při jeho vytvoření.

Zubatá pole v C#

Zubkované pole je pole, jehož prvky jsou samy o sobě pole. Na rozdíl od obdélníkového vícerozměrného pole může mít každé vnitřní pole jinou délku, a proto se zubaté pole často nazývá pole polí. Tato flexibilita pomáhá, když řádky přirozeně obsahují různý počet hodnot.

Deklarujete zubaté pole se dvěma sadami hranatých závorek a poté vytvoříte každé vnitřní pole samostatně. Následující příklad vytvoří zubaté pole, kde první řádek obsahuje tři hodnoty a druhý řádek dvě.

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();
  }
 }
}

Výraz jagged[0][2] přečte třetí prvek prvního řádku, který je 3, a jagged[1][1] přečte druhý prvek druhého řádku, který je 5. Protože každý řádek je samostatné pole, jagged pole efektivně využívají paměť, když se délky řádků mění, i když potřebují další krok k inicializaci každého vnitřního pole.

Nejčastější dotazy

Vlastnost Length vrací celkový počet prvků v poli C#. Například values.Length vrací 3 pro tříprvkové pole. Pro vícerozměrná pole vrací GetLength(dimension) velikost každého konkrétního rozměru.

Pole AC# má pevnou velikost nastavenou při vytvoření, zatímco seznam (List) se dynamicky zvětšuje a zmenšuje. Pole jsou rychlejší pro pevná data a spotřebovávají méně režijních nákladů, zatímco seznam (List) je vhodný pro kolekce, jejichž počet prvků se mění za běhu.

Standardní pole v jazyce C# ukládá prvky jednoho deklarovaného typu, takže míchání typů není povoleno. Pro uložení různých typů deklarujte pole typu object[] nebo použijte kolekci jako ArrayList, i když obojí obětuje bezpečnost typů při kompilaci.

Statická metoda Array.Sort uspořádá prvky pole v C# vzestupně na místě. Předejte pole metodě Array.Sort(values) a použijte metodu Array.Reverse poté pro sestupné pořadí. Řazení funguje s čísly, řetězci a dalšími srovnatelnými typy.

Metoda Array.Copy duplikuje rozsah prvků z jednoho pole do druhého, zatímco metoda Clone vytváří povrchní kopii celého pole. Přiřazení jedné proměnné pole k jiné proměnné zkopíruje pouze odkaz, nikoli podkladové prvky.

K výjimce IndexOutOfRangeException dochází, když kód přistupuje k pozici v poli, která neexistuje, například k hodnotám values[5] v tříprvkovém poli. Protože pole v C# jsou založena na nule, platné indexy běží od 0 do délky mínus jedna. Vždy nejprve ověřte index.

Ano. GitHub Copilot navrhuje deklarace polí, inicializaci a logiku smyček z komentáře nebo názvu metody ve Visual Studiu a VS Code. RevProhlédněte si každý návrh pro správné dimenzování a hranice indexu, protože Copilot může způsobit chyby typu „mimo rozsah“ a „odchylky o jednu“.

ML.NET reprezentuje vektory rysů a vstupy modelu jako pole C#, obvykle pole typu float[]. Trénovací data se načítají do polí nebo rozpětí a predikce vracejí pole skóre. Pevná velikost a rychlé indexování polí je činí efektivními pro kanály strojového učení.

Shrňte tento příspěvek takto: