Information

  • Informatik
  • C#
  • Arrays

Zurreal.de

Fantasy Art ~ Phantastische Kunst

Fantasy Art ~ Phantastische Kunst

Please click on 'Switch Style'.
The style of the website will change.

Bitte klicken Sie auf 'Switch Style'.
Die Gestaltung der Webseite wird sich ändern.

Arrays: 1D


string[] Array1D = new string[3]
{"Text1", "Text2", "Text3"};


int[] Array1D = new int[5]
{0, 1, 2, 3, 4};

Initialisieren von Arrays.


for (int i = 0; i < 10; i++)
txtBox.Text += Array1D[i].ToString();


for (int i = 0; i < Array1D.Length; i++)
txtBox.Text += Array1D[i].ToString();


foreach (int i in Array1D)
txtBox.Text += Array1D[i].ToString();

1D-Array, Ausgabe.


Arrays: 2D


int[,] Array2D = new int[3, 4]
{
{ 0, 0, 0, 0 }, /* 0 , 0123 */
{ 0, 0, 0, 0 }, /* 1 , 0123 */
{ 0, 0, 0, 0 }  /* 2 , 0123 */
};


int[,] Array2D = new int[3, 4];


Array2D[0,0] = 5;
Array2D[2,3] = 5;

Initialisierung eines zweidimensionalen Arrays. Mit und ohne initialen Werten.
Dann: Zuweisung der ersten und letzten Stelle des Arrays mit '5'.


for (int Zeile = 0; Zeile < 5; Zeile++)
{
DGV.Rows.Add(
Array2D[Zeile, 0],
Array2D[Zeile, 1],
Array2D[Zeile, 2]);
}

Ein 2D-Array wird zeilenweise in eine DGV ausgegeben.
Im Beispiel hat das Array 3 Spalten (012) und 5 Zeilen (01234).


for (int Zeile = 0; Zeile < 4; Zeile++)
{
for (int Stelle = 0; Stelle < 4; Stelle++)
{
txtBox.Text += Array2D[Zeile, Stelle].ToString() + " ";
}
}

Ein 2D-Array wird mit einer verschachtelten Schleife ausgegeben.
Beispiel: 4 Zeilen (0123), 4 Stellen (0123).


Arrays: 3D


int[,,] Array3D = new int[2, 3, 4]
{

{
{0,0,0,0}, /* 0 , 0 , 0123 */
{0,0,0,0}, /* 0 , 1 , 0123 */
{0,0,0,0}  /* 0 , 2 , 0123 */
},

{
{0,0,0,0}, /* 1 , 0 , 0123 */
{0,0,0,0}, /* 1 , 1 , 0123 */
{0,0,0,0}  /* 1 , 2 , 0123 */
}

};


int[,,] Array3D = new int[2, 3, 4];


Array3D[0,0,0] = 5;
Array3D[1,2,3] = 5;

Initialisierung eines dreidimensionalen Arrays. Mit und ohne initialen Werten.
Dann: Zuweisung der ersten und letzten Stelle des Arrays mit '5'.


for(int x = 0; x < 2; x++)
{
for (int y = 0; y < 3; y++)
{
for (int z = 0; z < 4; z++)
{
txt_Arrays.Text += Array3D[x, y, z].ToString();
}
}
}

Ein 3D-Array wird mit einer verschachtelten Schleife ausgegeben.
Beispiel:...


Arrays: Verarbeitung


for(int i = 0; i < AArray.Lenght; i++)
{ CArray[i] = BArray[i] * AArray[i]; }

Mit der Variablen [i] jede Stelle der Arrays erreichen.


for (int i = 0; i < DasArray.Length; i++)
{ Summe += DasArray[i]; }

Alle Werte eines Arrays addieren.


int[] ArrayInt = new int[10];
Random Zufall = new Random();

for (int i = 0; i < 10; i++)
ArrayInt[i] = Zufall.Next(1, 100);

Ein Array mit 10 Zufallszahlen von 1-99 füllen.


Array: Koordinatensystem 2D


int[,] Tabelle = new int[3, 4];
Tabelle[Zeitraum, Betrag]++;



A r r a y ~~~~ 0 ~~~ 1 ~~~ 2 ~~~ 3
r              |     |     |     |
r              V     V     V     V
a    . Tage . E u r o b e t r ä g e .
y    |------|-----|-----|-----|-----|
:    |      | <25 |25-50|51-75|76-99|
:    |------|-----|-----|-----|-----|
0 -> |<10   |  0  |  0  |  0  |  0  |
1 -> |10-19 |  0  |  0  |  0  |  0  |
2 -> |20+   |  0  |  0  |  0  |  0  |
     °------+-----+-----+-----+-----°

Das 2D-Array hat den Aufbau eines Koordinatensystems. 'Zeitraum' und 'Betrag' werden in einer Schleife zeilenweise aus dem Datensatz gelesen und auf die Indexe des Arrays (beginnend mit 0) heruntergebrochen, damit diese paarweise [0,0] Koordinaten im System sein können. Jede erfasste Position wird aufsummiert: Anzahl der Kunden.


Array: Koordinatensystem 3D


int[,,] Tabelle = new int[3, 2, 4];
Tabelle[Bereich, Geschlecht, Alter]++;


ARRAY ~~.~~~~~~ 0 ~~~ 1 ~~~ 2 ~~~ 3
|      |       |     |     |     |
V      V       V     V     V     V
.----.------.-----------------------.
|Ber |Gesch | A l t e r s g r uppen |
|eich|lecht | -20 |20-29|30-39| 40+ |
|----|------|-----|-----|-----|-----|
0 A  | 0 m  |  0  |  0  |  0  |  0  |
|    | 1 w  |  0  |  0  |  0  |  0  |
|----|------|-----|-----|-----|-----|
1 B  | 0 m  |  0  |  0  |  0  |  0  |
|    | 1 w  |  0  |  0  |  0  |  0  |
|----|------|-----|-----|-----|-----|
2 C  | 0 m  |  0  |  0  |  0  |  0  |
|    | 1 w  |  0  |  0  |  0  |  0  |
°----°------°-----°-----°-----°-----°

Das 3D-Array...


Beispiel: 2D-Array


string Datensatz;
int Alpha, Delta;
int[,] Array2D = new int[5,3];


string[] CW = new string[5]
{
"Col1Row1",
"Col1Row2",
"Col1Row3",
"Col1Row4",
"Col1Row5"
};

Variablen: Datensatz, usw.
Mit dem Hilfsstring kann zB in der ersten Spalte der DGV ein zugehöriger Text pro Zeile ausgegeben werden.

Alpha = Convert.ToInt32(Datensatz.Substring(5, 2));
Delta = Convert.ToInt32(Datensatz.Substring(10, 4));

/* Zahlen-Beispiel: */

/* x-9: Wert wird 0 */
if (Alpha < 10)
{ Alpha = 0; }
/* 10-49: Wert wird 1 */
if (Alpha >= 10 && Alpha < 50)
{ Alpha = 1; }
/* 50-x: Wert wird 2 */
if (Alpha >= 50)
{ Alpha = 2; }

Array2D[Alpha, Delta]++;

Beispiel:
Der ursprüngliche Wert der Variablen 'Alpha' wird in einen passenderen Wert (Array: 0,1,2, usw.) überführt. Mit 'Delta' muss es ebenso geschehen.

Danach bestimmen diese beiden Werte zusammen einen Punkt im Koordinatensystem (= 2dimensionales Array). Dieser Punkt wird aufsummiert (++) und gibt die Anzahl der Vorgänge wieder.


for (int i = 0; i < 5; i++)
{
DGV.Rows.Add
(
CW[i],
Array2D[i, 0],
Array2D[i, 1],
Array2D[i, 2]
);
DGV.Rows.Add();
}

Die for-Schleife gibt pro Durchgang eine komplette Zeile und eine leere Zeile in der DGV aus.


FileStream

using System.IO
FileStream fs = null;

try
{
  fs = new FileStream
  (@"C:\Datei.dat", FileMode.Open, FileAccess.Read);
}
catch
{
  MessageBox.Show("Die Datei kann nicht gelesen werden.");
  Application.Exit();
}

if(fs.Length == 0)
{
  MessageBox.Show("Die Datei ist leer.");
  fs.Close();
  Application.Exit();
}


/* Hier steht der StreamReader. */


sr.Close();
fs.Close();

  • FileMode
    • Append
    • Create
    • CreateNew
    • Open
    • OpenOrCreate
    • Truncate: Datei wird geöffnet und Inhalt gelöscht.
  • FileAccess
    • Read
    • Write
    • ReadWrite
fs.Length == 0
Länge ist 0.

FileStream: Dateipfad als String


FileStream fs = null;
string Pfad = "C:\Data\datei.dat";
fs = new FileStream(@Pfad, FileMode.Open, FileAccess.Read);


StreamReader

using System.IO
StreamReader sr = new StreamReader(fs);

string Datensatz;

while(sr.Peek() != -1)
{
  Datensatz = sr.ReadLine();
}

sr.Close();
sr.Peek() != -1
Das Einlesen der Datei ist noch nicht vorbei.
sr.ReadLine()
Eine Zeile wird eingelesen.

StreamReader: Substring


int Wert;

while(sr.Peek() != -1)
{
  Datensatz = sr.ReadLine();
  Wert = Convert.ToInt32(Datensatz.Substring(4, 2));
}

Substring(4, 2)
Zeichenkette: (Start, Länge)
Substring(0, 1)
Das erste Zeichen.

StreamReader: Split mit einem Array


string[] ArrayA;

while(sr.Peek() != -1)
{
  Datensatz = sr.ReadLine();
  ArrayA = Datensatz.Split(';');
}
DGV.Rows.Add(
  ArrayA[0],
  ArrayA[1],
  ArrayA[2]
  );

Split(';')
Datensatz wird beim Trennzeichen (hier: Semikolon) aufgeteilt.
Das Trennzeichen fällt weg.

StreamReader: DateTime


string[] ArrayA;
DateTime Datum;

while(sr.Peek() != -1)
{
  Datensatz = sr.ReadLine();
  ArrayA = Datensatz.Split(';');
  ArrayA[0] = ArrayA[0].Insert(2, ".");
  ArrayA[0] = ArrayA[0].Insert(5, ".");
  Datum = Convert.ToDateTime(ArrayA[0]);
}
DGV.Rows.Add(
Datum.ToString("dd. MMMM yyyy"),
ArrayA[1],
ArrayA[2]
);

Insert(2, ".")
01012000 = 01.012000
Insert(5, ".")
01.012000 = 01.01.2000
Convert.ToDateTime(Variable)
Eine Zeichenkette, z.B.: 01.01.2000,
wird explizit in ein Datum konvertiert.
("dd. MMMM yyyy")
Spezielle Formatierung des Datums.

StreamReader: Zeichenkette codieren


string Alphanumerisch = "ABCD F123";
string Wert;
int[] Codierung = new int[9];

while (sr.Peek() != -1)
{
  Alphanumerisch = sr.ReadLine();
  /*Alle Stellen durchlaufen*/
  for(int i = 0; i < 9; i++)
  {
    Wert = Alphanumerisch.Substring(i, 1);
    switch (Wert)
    {
    case "A":
    case "B": Codierung[i] = 3;
    break;
    case "C":
    case "DEFG, usw..": Codierung[i] = 5;
    break;
    /*Leerstelle*/
    case " ": Codierung[i] = 0;
    break;
    /*Nichts trifft zu: Es ist eine Zahl*/
    default: Codierung[i] = Convert.ToInt32(Wert);
    break;
    }
  }
}

Verarbeitung eines alphanumerischen Strings:
Buchstaben werden in Zahlen codiert. Zahlen
bleiben Zahlen. Leerstellen werden zu "0".


Datei speichern

using System.IO

string Datensatz;
Datensatz = txt_Eingabe.Text;

if (Datensatz.Length == 0)
{ MessageBox.Show("Datensatz ist leer."); }
else
{
  FileStream fs = null;
  fs = new FileStream(@"C:\BitteLoeschen.dat", FileMode.CreateNew);
  StreamWriter sr = new StreamWriter(fs);
  sr.Write(Datensatz);
  sr.Close();
  fs.Close();
}

Datensatz.Length == 0
ist dasselbe wie
String.IsNullOrEmpty(Datensatz)


Strings: Verarbeitung


string Datensatz;

Datensatz = Datensatz.Insert(2, ".");
Datensatz = Datensatz.Replace(" ", IntVariable.ToString());
Datensatz = Datensatz.Replace("A", "B");
IntegerVa = Convert.ToInt32(Datensatz.Substring(4, 2));
StringVar = Datensatz.Substring(4, 2);
Datensatz = Datensatz.Remove(3, 6);

Insert(2, ".")
Nach der 2ten Stelle einen Punkt einfügen.
Replace("A", "B")
Alle A's mit B's ersetzen.
Replace("A", Zahl.ToString())
Alle A's mit 'Zahl' ersetzen.
Substring(4, 2)
Eine Zeichenfolge von 2 Zeichen ab der Stelle 4 entnehmen.
Remove(3, 6)
Entfernt Zeichenfolge 3 bis 6.

DataGridView: DGV


DGV.Rows.Add
(
Variable_Spalte_1, /* a */
Variable_Spalte_2, /* b */
Variable_Spalte_3  /* c */
);

DGV.Rows.Add();

DGV.Rows.Clear();

Mit DGV.Rows.Add(a, b, c); wird eine Zeile ausgegeben.
In jeder Spalte wird die dazugehörige Variable geschrieben.

DGV.Rows.Add(); gibt eine leere Zeile aus.

DGV.Rows.Clear(); löscht die DGV.


DGV.Rows[rowIndex].Cells[columnIndex].Value = value;

Einer bestimmten Zelle einen Wert zuweisen.
How to insert value into datagridview cell?

  • Spalten hinzufügen:
    • Name: Name des Elements
    • Headertext: angezeigter Name
  • Spalten bearbeiten:
    • Darstellung
      • DefaultCellStyle (Zellen):
        Farben, Schrift, Ausrichtung
      • Headertext: angezeigter Name
    • Entwurf
      • Name: Name des Elements
    • Layout
      • AutoSizeMode:
        • AllCells: Spaltenbreite automatisch
        • ColumnHeader: ...
        • Fill: Spaltenbreite bis zum Rand ?
  • Eigenschaften:
    • ColumnHeaderDefaultCellStyle (Spaltenkopf)
      • Farben, Schrift, Ausrichtung
    • DefaultCellStyle (Zellen)
      • Farben, Schrift, Ausrichtung