TOC

This article has been localized into Czech by the community.

Sbírky:

Pole

Pole fungují jako kolekce položek, například řetězců. Můžete je použít k seskupení položek do jedné skupiny a provádět na nich různé operace, například třídění. Kromě toho několik metod uvnitř frameworku pracuje s polemi, což umožňuje přijmout rozsah položek místo pouhé jedné. Tato skutečnost sama o sobě dělá znalost polí důležitou.

Pole jsou deklarovány podobně jako proměnné, s použitím hranatých závorek [] za datovým typem, takto:

string[] names;

Musíte vytvořit instanci pole pro jeho použití, což se dělá takto:

string[] names = new string[2];

Číslo (2) je velikost pole, tedy množství položek, které můžeme umístit do pole. Vložení položek do pole je také celkem jednoduché:

names[0] = "John Doe";

Ale proč 0? Stejně jako je tomu s mnoha dalšími věcmi ve světě programování, počítání začíná od nuly místo od jedné. Takže první položka má index 0, další položka 1 a tak dále. Je nutné na to myslet, ve chvíli kdy plníš pole položkami, protože přeplnění pole způsobí chybu. Když se podíváš na inicializaci, nastavení velikosti pole na 2, může se zdát přirozené naplnit pole čísly 0, 1 a 2, ale to je o jedno číslo víc. Pokud to uděláš, objeví se chybová hláška. Chybové hlášky budou probírány v dalších kapitolách.

Dříve jsme se učili o cyklech a očividně jdou skvěle dohromady s poli. Nejběžnější cesta jak dostat data z pole je prohledat je pomocí cyklu a provézt nějaký typ operace s každou hodnotou. Pojďme použít předešlé pole pro názorný příklad:

using System;
using System.Collections;

namespace ConsoleApplication1
{
    class Program
    {
static void Main(string[] args)
{
    string[] names = new string[2];

    names[0] = "John Doe";
    names[1] = "Jane Doe";

    foreach(string s in names)
Console.WriteLine(s);

    Console.ReadLine();
}
    }
}

Používáme cyklus foreach, protože je to nejjednodušší cyklus, ale samozřejmě bychom místo toho mohli použít jeden z ostatních typů cyklů. Cyklus je také dobrý s polem (array) , například pokud potřebujete počítat každou položku, jako je zde:

for(int i = 0; i < names.Length; i++)
    Console.WriteLine("Item number " + i + ": " + names[i]);

Vlastně je to velice jednoduché. Použijeme vlastnost Length (délka) ke zjištění počtu kolikrát se smyčka opakuje a čítač (i) kam se hodnota průběžně ukládá a můžeme ji použít pro zjištění, kde v poli jsme. Stejně jako používáme čísla jako indexy pro vložení do pole, můžeme je využít pro vyhledání určité položky z pole.

Již jsem vám dříve říkal, že pole mohou být použita k třídění rozsahu hodnot, což je ve skutečnosti velice snadné. Třída Array obsahuje celou řadu chytrých metod pro práci s polemi. V tomto příkladu použijeme čísla místo řetězců, aby to bylo o něco jiné, ale mohly to být klidně i řetězce. Chtěl bych vám ukázat jiný způsob, jak naplnit pole, což je mnohem jednodušší, máte-li malou, předem definovanou sadu položek, které chcete do pole dát. Podívejte se:

int[] numbers = new int[5] { 4, 3, 8, 0, 5 };

Jedním řádkem jsme vytvořili pole o velikosti 5 a naplnili jsme jej pěti celými čísly. Tímto způsobem zaplníte pole a máte i tu výhodu, že překladač zkontroluje a zajistí, abyste do pole nevložili příliš mnoho položek. Zkuste přidat ještě jedno číslo - uvidíte, že si překladač bude stěžovat.

Vlastně je možný kratší zápis, jako tento:

int[] numbers = { 4, 3, 8, 0, 5 };

Toto je krátké a nemusíte určovat velikost pole. První přístup může být později jednodušší.

Pokusme se roztřídit pole - zde je úplný příklad:

using System;
using System.Collections;

namespace ConsoleApplication1
{
    class Program
    {
static void Main(string[] args)
{
    int[] numbers = { 4, 3, 8, 0, 5 };

    Array.Sort(numbers);

    foreach(int i in numbers)
Console.WriteLine(i);

    Console.ReadLine();
}
    }
}

Jedinou opravdu novou záležitostí je příkaz Array.Sort. Může mít různé parametry pro různé druhy třídění, ale v tomto případě jednoduše vezme a setřídí naše pole. Jak vidíte z výsledku, naše pole je setříděné. Třída Array má také jiné metody, například metodu Reverse(). V dokumentaci si můžete vyhledat všechny funkce třídy Array.

Pole, která jsme doposud používali, byla pouze jednorozměrná. Pole v C# však mohou být vícerozměrná, někdy označována jako pole v polích. Vícerozměrná pole mají v C# dvě podoby: Obdélníková pole a zubatá pole. Rozdíl spočívá v tom, že u obdélníkových polí musí být všechny dimenze stejně velké, odtud jejich název obdélníková. Zubatá pole mohou mít dimenze různých velikostí. Několikanásobná pole jsou složité téma a jsou poněkud nad rámec tohoto tutoriálu.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!