C# ArrayList výukový program s příklady

⚡ Chytré shrnutí

ArrayList v jazyce C# je dynamická kolekce z oboru názvů System.Collections, která ukládá prvky jako objekty. Na rozdíl od pole se za běhu zvětšuje a zmenšuje a může v jednom seznamu uchovávat celá čísla, řetězce a booleovské hodnoty.

  • 🔄 Dynamické dimenzování: ArrayList přidává a odebírá prvky za běhu, takže počet položek není předem pevně stanoven jako u pole.
  • ???? Úložiště objektů: Každý prvek je uložen jako objekt, což umožňuje jednomu ArrayList uchovávat smíšené datové typy, jako například int, string a bool.
  • Základní metody: Funkce Add, Insert, Remove, RemoveAt, Contains a Sort pokrývají každodenní operace s objektem ArrayList.
  • 📊 Počet a kapacita: Vlastnost Count vrací aktuální počet položek, zatímco Capacity je přidělený úložný prostor.
  • (Tj. Moderní volba: Microsoft doporučuje generický List pro nový kód, protože zvyšuje bezpečnost typů při kompilaci a zabraňuje zabalování.
  • 🤖 Asistence AI: GitHub Copilot scaffoldinguje kód ArrayList a kanály ML.NET předávají data prostřednictvím typů kolekcí C#.

Seznam polí v jazyce C#

Co je ArrayList v C#?

Kolekce ArrayList je podobná kolekci Pole datový typ v C#. Největším rozdílem je dynamická povaha kolekce seznamů polí.

Pro pole musíte definovat počet prvků, které pole může obsahovat v době deklarace pole. Ale v případě kolekce Array List to není nutné dělat předem. Prvky lze kdykoli přidat nebo odebrat z kolekce Seznam polí. Podívejme se na operace dostupné pro kolekci seznamu polí podrobněji.

Deklarace seznamu polí

Deklarace ArrayList je uvedena níže. Seznam polí je vytvořen pomocí datového typu ArrayList. Klíčové slovo „new“ se používá k vytvoření objektu ArrayList. Objekt je pak přiřazen k proměnné a1. Takže nyní bude proměnná a1 použita pro přístup k různým prvkům seznamu polí.

ArrayList a1 = new ArrayList()

Přidání prvků do pole

Metoda add se používá k přidání prvku do ArrayList. Metodu add lze použít k přidání jakéhokoli druhu prvku datového typu do seznamu polí. Do seznamu polí tedy můžete přidat celé číslo, řetězec nebo dokonce booleovskou hodnotu. Obecná syntaxe metody sčítání je uvedena níže

ArrayList.add(element)

Níže je uvedeno několik příkladů, jak lze použít metodu „přidat“. Metodu add lze použít k přidání různých typů dat do kolekce Array List.

Níže vidíte příklady toho, jak můžeme do kolekce Array List přidat Integer's Strings a dokonce booleovské hodnoty.

  • a1.add(1) – Toto přidá do kolekce celočíselnou hodnotu
  • a1.add(“Příklad”) – Přidá do kolekce hodnotu String
  • a1.add(true) – Toto přidá do kolekce booleovskou hodnotu

Nyní se podívejme, jak to funguje na úrovni kódu. Veškerý níže uvedený kód bude zapsán do naší konzolové aplikace. Kód bude zapsán do našeho souboru Program.cs.

V programu níže napíšeme kód pro vytvoření nového seznamu polí. Ukážeme také přidání prvků a zobrazení prvků seznamu Array.

ArrayList v C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1[0]);	  
   Console.WriteLine(a1[1]);
   Console.WriteLine(a1[2]);
   Console.ReadKey();
  }
 }
}

Code Vysvětlení:-

  1. První krok slouží k deklaraci našeho seznamu polí. Zde deklarujeme a1 jako proměnnou pro uložení prvků našeho seznamu polí.
  2. Poté pomocí klíčového slova add přidáme číslo 1 , řetězec „Příklad“ a booleovskou hodnotu „true“ do seznamu polí.
  3. Poté použijeme metodu Console.WriteLine k zobrazení hodnoty každého prvku seznamu polí na konzoli. Všimněte si, že stejně jako k polím můžeme přistupovat k prvkům prostřednictvím jejich indexových pozic. Pro přístup na první pozici seznamu polí tedy použijeme pozici indexu [0]. A tak dále a tak dále.

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:

ArrayList v C#

Z výstupu můžete vidět, že všechny prvky ze seznamu polí jsou odeslány do konzole.

Podívejme se na některé další metody, které jsou dostupné jako součást ArrayList.

Počítat

Tato metoda se používá k získání počtu položek v kolekci ArrayList. Níže je obecná syntaxe tohoto příkazu.

ArrayList.Count() – Tato metoda vrátí počet prvků, které obsahuje seznam polí.

obsahuje

Tato metoda se používá ke zjištění, zda je prvek přítomen v kolekci ArrayList. Níže je obecná syntaxe tohoto příkazu

ArrayList.Contains(element) – Tato metoda vrátí hodnotu true, pokud je prvek v seznamu přítomen, jinak vrátí hodnotu false.

RemoveAt

Tato metoda se používá k odstranění prvku na určité pozici v kolekci ArrayList. Níže je obecná syntaxe tohoto příkazu

ArrayList.RemoveAt(index) – Tato metoda odstraní prvek z konkrétní pozice v seznamu Array List.

Nyní se podívejme, jak to funguje na úrovni kódu. Veškerý níže uvedený kód bude zapsán do naší konzolové aplikace. Kód bude zapsán do našeho souboru Program.cs.

V níže uvedeném programu napíšeme kód, abychom viděli, jak můžeme použít výše uvedené metody.

ArrayList v C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1.Count);
   Console.WriteLine(a1.Contains(2));
   Console.WriteLine(a1[1]);
   a1.RemoveAt(1);
   Console.WriteLine(a1[1]);
   Console.ReadKey();
  }
 }
}

Code Vysvětlení:-

  1. Takže první vlastnost, kterou vidíme, je vlastnost Count. Získáváme vlastnost Count seznamu polí a1 a pak ji zapisujeme do konzoly.
  2. Ve druhé části pomocí metody Contains zjistíme, zda ArrayList a1 obsahuje prvek 2. Výsledek pak zapíšeme do Console pomocí příkazu Writeline.
  3. Nakonec, abychom předvedli metodu Odebrat prvek, provádíme níže uvedené kroky,
    1. Nejprve zapíšeme hodnotu prvku na pozici Index 1 seznamu polí do konzole.
    2. Poté odstraníme prvek na pozici Index 1 v seznamu polí.
    3. Nakonec opět zapíšeme hodnotu prvku na pozici Index 1 seznamu polí do konzole. Tato sada kroků poskytne reálnou představu, zda metoda odstranění bude fungovat, jak by měla.

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:

ArrayList v C#

Proč je poslední hodnota pravdivá?

Pokud vidíte posloupnost událostí, prvek Příklad je z pole odstraněn, protože je na pozici 1. Pozice 1 pole se pak nahradí tím, co bylo na pozici 2 dříve, což je hodnota 'true'

Jak procházet seznamem ArrayList v jazyce C#

Čtení každého prvku seznamu ArrayList je běžný úkol. Protože seznam ArrayList ukládá své položky jako objekty, můžete je navštívit pomocí smyčky foreach nebo smyčky for, která používá vlastnost Count. Smyčka foreach je nejjednodušší způsob, protože prochází každou položkou v pořadí bez nutnosti indexu.

Následující příklad vytvoří ArrayList řetězců a vypíše každou hodnotu na samostatný řádek. Kód je napsán v souboru Program.cs konzolové aplikace.

Krok 1) Importujte jmenný prostor System.Collections a vytvořte ArrayList se třemi položkami.

Krok 2) Pomocí smyčky foreach načtete každý prvek jako objekt a zapíšete ho do konzole.

using System;
using System.Collections;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add("Java");
   a1.Add("Python");
   a1.Add("Kotlin");
   foreach (object item in a1)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Code Vysvětlení:-

  1. Jmenný prostor System.Collections je importován, takže program má k dispozici typ ArrayList.
  2. Tři řetězcové hodnoty jsou do ArrayList přidány metodou Add.
  3. Smyčka foreach čte každou položku jako objekt a metoda Console.WriteLine ji vypíše na nový řádek.

Když program běží, vypíše Java, Python, a Kotlin na samostatných řádcích. Cyklus for s vlastností Count by dal stejný výsledek a zároveň by vám umožnil použít indexovou pozici každého prvku.

Metody a vlastnosti ArrayList v jazyce C#

Třída ArrayList nabízí mnoho vestavěných metod a vlastností pro správu svých prvků. Kromě přidávání a odebírání položek může kolekci třídit, vyhledávat a obracet. Nejběžnější členy jsou uvedeny níže.

Člen Description
přidat Přidá jeden prvek na konec ArrayList.
Vložit Přidá prvek na konkrétní pozici indexu.
Odstranit Odstraní první výskyt daného prvku.
RemoveAt Odstraní prvek na dané pozici indexu.
Čirá Odebere všechny prvky z ArrayList.
Typ Seřadí prvky vzestupně.
Reverse Reverses pořadí prvků v seznamu.
obsahuje Vrací hodnotu true, pokud daný prvek v seznamu existuje.
IndexOf Vrátí indexovou pozici daného prvku.
Počítat Vlastnost, která vrací počet uložených prvků.
Kapacita Vlastnost, která vrací počet prvků, které seznam může obsahovat.

Tito členové vám umožňují přidávat, vyhledávat, řadit a odebírat položky, aniž byste museli sami psát logiku, což je jedna z hlavních výhod použití kolekce oproti prostému poli.

Rozdíl mezi ArrayList a List v C#

ArrayList i generický typ Seznam ukládají skupinu položek, které se mohou za běhu rozrůstat, ale liší se ve způsobu, jakým zpracovávají typy. Znalost tohoto rozdílu vám pomůže vybrat tu správnou pro moderní kód C#.

Hlavní rozdíly jsou uvedeny níže:

  • Bezpečnost typů: ArrayList ukládá každou položku jako objekt, zatímco List je vázán na jeden deklarovaný typ a je kontrolován při kompilaci.
  • Výkon: ArrayList zabaluje a rozbaluje typy hodnot, jako například int, což stojí čas, zatímco List se zabalování vyhýbá kvůli vyšší rychlosti.
  • Namespace: ArrayList se nachází v System.Collections, zatímco List se nachází v System.Collections.Generic.
  • lití: Čtení z ArrayList často vyžaduje přetypování zpět na původní typ, ale List vrací správný typ přímo.
  • Doporučení: Microsoft doporučuje List pro nový vývoj, protože je bezpečnější, rychlejší a snáze čitelný.

Stručně řečeno, ArrayList je užitečný pro pochopení staršího kódu nebo úložiště smíšeného typu, zatímco List je dnes preferovanou volbou pro většinu aplikací.

Nejčastější dotazy

Pole má pevnou velikost a při deklaraci ukládá jednu sadu datových typů. ArrayList se za běhu zvětšuje a zmenšuje a ukládá každou položku jako objekt, takže může obsahovat smíšené datové typy v jednom seznamu.

ArrayList se neodstraní, ale Microsoft nedoporučuje ji pro nový vývoj. Generická třída List v System.Collections.Generic je preferována, protože zvyšuje typovou bezpečnost a zlepšuje výkon, takže většina moderního kódu C# používá místo ní třídu List.

Protože ArrayList ukládá položky jako objekty, přidání hodnotového typu, například int, je zabalí do objektu, což je tzv. „boxing“. Zpětné čtení a přetypování na původní typ je „unboxing“. Oba kroky snižují výkon, čemuž se List vyhýbá.

ArrayList podporuje několik čtecích programů najednou, ale není zaručeno, že členové instance budou po úpravě kolekce bezpeční pro přístup z více vláken. Pro bezpečné vícevláknové zápisy jej zabalte do ArrayList.Syncchronizovanou metodu nebo místo toho použijte souběžnou kolekci.

Počet je počet prvků aktuálně uložených v ArrayList. Kapacita je celkový počet prvků, které může objekt ArrayList pojmout, než se jeho velikost změní. Kapacita je vždy rovna nebo větší než Počet a automaticky se zvětšuje s přidáváním položek.

Položky můžete zkopírovat do silně typovaného seznamu (List) pomocí metod Cast a ToList nebo zavolat metodu ToArray pro získání pole objektů. Převod na generický seznam (List) je běžný, protože obnovuje bezpečnost typů.

Ano. GitHub Copilot umí psát deklarace ArrayList, přidávat a odebírat volání a smyčky z krátkého komentáře nebo názvu metody. Často také navrhuje generickou verzi List, protože to je doporučená kolekce pro nový kód C#.

ML.NET obvykle čte trénovací data prostřednictvím generických kolekcí, jako jsou List a IEnumerable, které se mapují na jeho kanál IDataView. Neobecný ArrayList se zřídka používá přímo, protože silně typovaná kolekce udržuje data strojového učení přehledná a typově bezpečná.

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