Ako inicializovať polia v C#

Ako Inicializovat Polia V C



V C# polia slúžia ako kontajnery na ukladanie prvkov rovnakého dátového typu. Pri vytváraní poľa existuje viacero prístupov, ako ho inicializovať pomocou prvkov. Tento článok sa ponorí do rôznych metód inicializácie polí v C# a poskytuje komplexné preskúmanie každého prístupu.

Metódy na inicializáciu polí v C#

Polia sú základnou dátovou štruktúrou v počítačovom programovaní, ktorá vám umožňuje ukladať a manipulovať s kolekciou prvkov rovnakého dátového typu v súvislých pamäťových miestach. Tu je niekoľko spôsobov, ako inicializovať polia v C#:







1: Inicializácia polí pomocou syntaxe inicializátora poľa

Najjednoduchší prístup k inicializácii poľa je použitie syntaxe inicializátora poľa, pretože to zahŕňa uzavretie prvkov poľa do zložených zátvoriek oddelených čiarkami, napríklad:



int [ ] čísla = { 1 , 2 , 3 , 4 , 5 } ;


V tomto kóde sa vytvorí celočíselné pole s názvom „čísla“ a inicializuje sa hodnotami 1 až 5. Podobne môžete použiť rovnakú syntax na inicializáciu viacrozmerného poľa.



int [ , ] myMultiDimensionalArray = { { 1 , 2 } , { 3 , 4 } , { 5 , 6 } } ;


Tu je príklad kódu, ktorý používa syntax inicializátora na inicializáciu 1D a 2D poľa v C#:





pomocou systému;

pole triedy
{
static void Main ( reťazec [ ] args )
{
// Inicializácia 1D poľa pomocou syntaxe inicializátora
int [ ] pole1D = { 1 , 2 , 3 , 4 , 5 } ;
Console.WriteLine ( 'Hodnoty v poli 1D:' ) ;
pre ( int i = 0 ; i < pole1D.Length; i++ ) {
Console.WriteLine ( array1D [ i ] ) ;
}
// Inicializácia 2D poľa pomocou syntaxe inicializátora
int [ , ] pole2D = { { 1 , 2 } , { 3 , 4 } , { 5 , 6 } } ;
Console.WriteLine ( 'Hodnoty v poli 2D:' ) ;
pre ( int i = 0 ; i < array2D.GetLength ( 0 ) ; i++ ) {
pre ( int j = 0 ; j < array2D.GetLength ( 1 ) ; j++ ) {
Console.WriteLine ( '({0}, {1}): {2}' , i, j, pole 2D [ i, j ] ) ;
}
}
}
}


V tomto kóde používame syntax inicializátora na inicializáciu 1-rozmerného celočíselného poľa s názvom array1D s hodnotami 1, 2, 3, 4 a 5.

Syntax inicializátora používame aj na inicializáciu dvojrozmerného celočíselného poľa s názvom array2D s hodnotami {1, 2}, {3, 4} a {5, 6}.



Potom používame ďalšie cykly for na iteráciu cez každý prvok každého poľa a vytlačenie jeho hodnoty do konzoly.

2: Inicializácia polí pomocou nového kľúčového slova

Ďalší spôsob inicializácie poľa zahŕňa použitie Nový kľúčové slovo. Zahŕňa to špecifikovanie veľkosti poľa v hranatých zátvorkách, za ktorým nasleduje kľúčové slovo new a potom typ údajov prvkov poľa. Napríklad:

int [ ] čísla = new int [ 5 ] ;


Tento kód vytvorí celočíselné pole s názvom čísla s veľkosťou 5 a inicializuje všetky prvky na ich predvolenú hodnotu, ktorá je 0 pre celočíselné polia.

Tu je syntax na inicializáciu viacrozmerného poľa pomocou nového kľúčového slova v C#:

< typu > [ , ] < názov poľa > = nový < typu > [ < dĺžka1 > , < dĺžka2 > ,... ] { { < počiatočné hodnoty > } } ;


V tejto syntaxi je dátovým typom prvkov poľa, je názov poľa, , atď. sú dĺžky poľa v každej dimenzii a sú počiatočné hodnoty prvkov poľa.

Tu je príklad použitia tejto syntaxe na inicializáciu dvojrozmerného celočíselného poľa:

int [ , ] myArray = new int [ 3 , 2 ] { { 1 , 2 } , { 3 , 4 } , { 5 , 6 } } ;


V tomto príklade inicializujeme 2d celočíselné pole s názvom myArray s 3 riadkami a 2 stĺpcami pomocou kľúčového slova new. Poskytujeme tiež počiatočné hodnoty pre každý prvok poľa pomocou syntaxe dvojitých zložených zátvoriek. Hodnoty sú {1, 2}, {3, 4} a {5, 6}, ktoré zodpovedajú prvkom v každom riadku.

Tu je príklad, ako použiť nové kľúčové slovo na inicializáciu 1-dimenzionálneho aj 2-dimenzionálneho poľa v C#, spolu s kódom na vytlačenie hodnôt v každom poli:

pomocou systému;

pole triedy
{
static void Main ( reťazec [ ] args )
{
// Inicializácia a 1 -rozmerné pole
int [ ] myArray1D = new int [ ] { 1 , 2 , 3 , 4 , 5 } ;
Console.WriteLine ( 'Hodnoty v myArray1D:' ) ;
pre ( int i = 0 ; i < myArray1D.Length; i++ )
{
Console.WriteLine ( myArray1D [ i ] ) ;
}
// Inicializácia a 2 -rozmerné pole
int [ , ] myArray2D = new int [ , ] { { 1 , 2 } , { 3 , 4 } , { 5 , 6 } } ;
Console.WriteLine ( 'Hodnoty v myArray2D:' ) ;
pre ( int i = 0 ; i < myArray2D.GetLength ( 0 ) ; i++ )
{
pre ( int j = 0 ; j < myArray2D.GetLength ( 1 ) ; j++ )
{
Console.WriteLine ( '({0}, {1}): {2}' , i, j, myArray2D [ i, j ] ) ;
}
}
}
}


V tomto kóde používame kľúčové slovo new na inicializáciu jednorozmerného celočíselného poľa tzv myArray1D s hodnotami 1, 2, 3, 4 a 5 a 2-rozmerné celočíselné pole tzv. myArray2D s hodnotami {1, 2}, {3, 4} a {5, 6}.

Potom používame cykly for na iteráciu každého prvku každého poľa a vytlačenie jeho hodnoty do konzoly. Všimnite si, že pre 2-rozmerné pole, ktoré používame GetLength() na určenie počtu riadkov a stĺpcov a pomocou vnorených slučiek for iterujte každý prvok.

3: Inicializácia polí pomocou slučiek

Polia je možné inicializovať aj pomocou slučiek. Jedným z prístupov je použitie cyklu for, ktorý vám umožňuje iterovať pole a priraďovať hodnoty každému prvku.

int [ ] čísla = new int [ 5 ] ;
pre ( int i = 0 ; i < čísla.Dĺžka; i++ )
{
čísla [ i ] = i + 1 ;
}


Tento kód vytvorí celočíselné pole s názvom čísla s veľkosťou 5 a každému prvku priradí hodnotu rovnajúcu sa jeho indexu plus 1. Tu je príklad, ako inicializovať 2-rozmerné celočíselné pole v C# pomocou slučiek:

int [ , ] myArray = new int [ 3 , 2 ] ;
pre ( int i = 0 ; i < 3 ; i++ )
{
pre ( int j = 0 ; j < 2 ; j++ )
{
myArray [ i, j ] = i + j;
}
}


V tomto príklade používame vnorené cykly for na iteráciu cez každý prvok dvojrozmerného celočíselného poľa tzv. myArray , ktorý má 3 riadky a 2 stĺpce. Pre každý prvok nastavujeme jeho hodnotu na súčet jeho riadkových a stĺpcových indexov pomocou výrazu i + j.

Tu je príklad, ako použiť slučky na inicializáciu 1-rozmerného aj 2-rozmerného poľa v C#, spolu s kódom na vytlačenie hodnôt v každom poli:

pomocou systému;

pole triedy
{
static void Main ( reťazec [ ] args )
{
// Inicializácia a 1 -rozmerné pole pomocou slučky
int [ ] myArray1D = new int [ 5 ] ;
pre ( int i = 0 ; i < myArray1D.Length; i++ )
{
myArray1D [ i ] = i + 1 ;
}
Console.WriteLine ( 'Hodnoty v myArray1D:' ) ;
pre ( int i = 0 ; i < myArray1D.Length; i++ )
{
Console.WriteLine ( myArray1D [ i ] ) ;
}
// Inicializácia a 2 -rozmerné pole pomocou vnorených slučiek
int [ , ] myArray2D = new int [ 3 , 2 ] ;
pre ( int i = 0 ; i < 3 ; i++ )
{
pre ( int j = 0 ; j < 2 ; j++ )
{
myArray2D [ i, j ] = i + j;
}
}
Console.WriteLine ( 'Hodnoty v myArray2D:' ) ;
pre ( int i = 0 ; i < 3 ; i++ )
{
pre ( int j = 0 ; j < 2 ; j++ )
{
Console.WriteLine ( '({0}, {1}): {2}' , i, j, myArray2D [ i, j ] ) ;
}
}
}
}


V tomto kóde používame cyklus for na inicializáciu 1-rozmerného celočíselného poľa s názvom myArray1D s hodnotami 1, 2, 3, 4 a 5. Používame tiež vnorené cykly for na inicializáciu 2-rozmerného celočíselného poľa tzv. myArray2D s hodnotami {0, 1}, {1, 2} a {2, 3} pomocou výrazu i + j.

Potom pomocou ďalších cyklov for iterujte každý prvok každého poľa a vytlačte jeho hodnotu do konzoly.

4: Inicializácia polí pomocou Array.Copy()

Alternatívny prístup k inicializácii poľa zahŕňa použitie funkcie Array.Copy(). To zahŕňa vytvorenie zdrojového poľa s požadovanými prvkami a ich následné skopírovanie do cieľového poľa. Napríklad:

int [ ] zdroj = { 1 , 2 , 3 , 4 , 5 } ;
int [ ] cieľ = new int [ zdroj.Dĺžka ] ;
Array.Copy ( zdroj , cieľ, zdroj.Dĺžka ) ;


Tento kód vytvorí celočíselné pole s názvom zdroj s hodnotami 1 až 5, vytvorí nové celočíselné pole s názvom target s rovnakou veľkosťou ako zdroj a potom skopíruje prvky zo zdroja do cieľa.

Dovoľte mi uviesť príklad demonštrujúci využitie Array.Copy na inicializáciu dvojrozmerného celočíselného poľa v C#:

int [ , ] sourceArray = { { 1 , 2 } , { 3 , 4 } , { 5 , 6 } } ;
int [ , ] destinationArray = new int [ 3 , 2 ] ;

Array.Copy ( sourceArray, destinationArray, sourceArray.Length ) ;


V tomto príklade máme 2-rozmerné celočíselné pole tzv sourceArray s 3 riadkami a 2 stĺpcami. Používame Array.Copy() na skopírovanie obsahu zdrojového poľa do nového 2-rozmerného celočíselného poľa s názvom destinationArray, ktoré má tiež 3 riadky a 2 stĺpce.

The Array.Copy() metóda trvá tri argumenty : zdrojové pole , cieľové pole , a dĺžka údajov, ktoré sa majú skopírovať. V tomto prípade kopírujeme celý obsah sourceArray do destinationArray , tak prejdeme sourceArray.Length ako tretí argument.

Všimnite si, že môžete použiť Array.Copy() inicializovať polia s ľubovoľným počtom rozmerov, pokiaľ majú zdrojové a cieľové polia rovnaký počet rozmerov a rovnakú veľkosť v každej dimenzii.

Tiež majte na pamäti, že Array.Copy() vykoná plytkú kópiu zdrojového poľa, čo znamená, že ak zdrojové pole obsahuje typy odkazov, odkazy sa skopírujú, ale samotné objekty nebudú duplikované.

Tu je úplný kód, ktorý používa Array.Copy() funkcia na inicializáciu poľa v C#:

pomocou systému;

pole triedy
{
static void Main ( reťazec [ ] args )
{
// Inicializácia a 1 -rozmerné pole pomocou Array.Copy
int [ ] sourceArray1D = { 1 , 2 , 3 , 4 , 5 } ;
int [ ] destinationArray1D = new int [ 5 ] ;
Array.Copy ( sourceArray1D, destinationArray1D, sourceArray1D.Length ) ;
Console.WriteLine ( 'Hodnoty v cieľovom poli1D:' ) ;
pre ( int i = 0 ; i < destinationArray1D.Length; i++ ) {
Console.WriteLine ( destinationArray1D [ i ] ) ;
}
// Inicializácia a 2 -rozmerné pole pomocou Array.Copy
int [ , ] sourceArray2D = { { 1 , 2 } , { 3 , 4 } , { 5 , 6 } } ;
int [ , ] destinationArray2D = new int [ 3 , 2 ] ;
Array.Copy ( sourceArray2D, destinationArray2D, sourceArray2D.Length ) ;
Console.WriteLine ( 'Hodnoty v cieľovom poli2D:' ) ;
pre ( int i = 0 ; i < destinationArray2D.GetLength ( 0 ) ; i++ ) {
pre ( int j = 0 ; j < destinationArray2D.GetLength ( 1 ) ; j++ ) {
Console.WriteLine ( '({0}, {1}): {2}' , i, j, destinationArray2D [ i, j ] ) ;
}
}
}
}


V tomto kóde používame Array.Copy() na inicializáciu 1-rozmerného celočíselného poľa s názvom destinationArray1D s hodnotami 1, 2, 3, 4 a 5 zo zdrojového poľa s názvom sourceArray1D.

Používame tiež Array.Copy() na inicializáciu 2-rozmerného celočíselného poľa s názvom destinationArray2D s hodnotami {1, 2}, {3, 4} a {5, 6} zo zdrojového poľa s názvom sourceArray2D.

Potom používame ďalšie cykly for na iteráciu cez každý prvok každého poľa a vytlačenie jeho hodnoty do konzoly.

Záver

V tomto článku sme skúmali rôzne spôsoby inicializácie polí v C#. Pokryli sme syntax inicializátora poľa pomocou kľúčového slova new, inicializácie polí pomocou slučiek a pomocou metódy Array.Copy(). V závislosti od konkrétneho prípadu použitia má každá z týchto metód svoj vlastný súbor výhod a nevýhod. Zoznámenie sa s týmito rôznymi prístupmi vám umožní vybrať si ten najvhodnejší pre vaše konkrétne požiadavky.