Entwickler-Ecke

C# - Die Sprache - Struct Array an Methode übergeben


RalphHoffmann - Di 31.03.15 20:33
Titel: Struct Array an Methode übergeben
Hallo @all....
Ich* bin gerade dabei über die ils einen Informatik-Kurs zu machen. Habe bisher mit C# keine Erfahrungen....aber bisher klappte es ganz gut....kann etwas an Erfahrung aus VBA nutzen.

Jetzt habe ich bei einer Übung aber ein Problem. Ich soll eine "Lagerverwaltung" schreiben. Die Lagerbehälter sollen als Struct dargestellt werden. Es sollen 50 Behälter sein...ich muss also ein Struct-Array anlegen. Es soll unter anderem eine ID hinterlegt werden und auf Einmaligkeit geprüft werden. Das alles klappt super.

Aber an einer einfachen Ausgabe aller angelegter Kisten als Liste auf der Console...scheiter ich. Die Ausgabe soll in einer Methode erfolgen. Jetzt muss ich das Struct-Array an die Methode übergeben und dort mit einer for-Schleife ausgeben....so gesehen kein Problem, was ich nicht hinbekomme ist die Übergabe des Struct-Arrays an die Methode....ich habe bisher über Google nur Beispiele für reine Arrays gefunden.

Kann mir da jemand helfen?

Lieben Dank
Ralph

*Ich: Ralph, 45 Jahre jung :-) aus Wuppertal


Th69 - Di 31.03.15 20:43

Hallo und :welcome:

was genau klappt denn nicht? Du kannst einfach MyStruct[] als Methodenparameter angeben.
Ansonsten poste mal deinen Code und evtl. entsprechende Fehlermeldungen.

PS: Oh, hat die ILS jetzt zu C# gewechselt? Früher haben die immer WinForms mit C++/CLI gemacht (was schon seit Jahren nicht mehr unterstützt wird).


RalphHoffmann - Di 31.03.15 20:46

Hi Th69 :-)
mit c++ haben sie nur ganz kurz gearbeitet.... ;-)

Hier ein paar Codezeilen. Erst das Struct und dann aus Main():


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
        //Strukturierte Variable definieren
        struct kiste
        {
            public double breite;
            public double laenge;
            public double hoehe;
            public double volume;
            public string ID;
        }



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
static void Main(string[] args)
{
    //Ein 50-faches Variablenarray deklarieren
    kiste[] kleineKiste = new kiste[50];
.
.
.
.
         case 5:
             liste(kleineKiste);
             break;
      }
    }
    while (auswahl != 0);


Gruß
Ralph


Th69 - Di 31.03.15 20:51

Und wie sieht der Kopf (Signatur) deiner Methode liste aus?

PS: Klassen/Strukturen sowie Methodennamen in C# sollten mit einem Großbuchstaben beginnen.


RalphHoffmann - Di 31.03.15 20:53

ok....danke für den Tip mit dem Methoden-Namen.

Die Methode Liste(...) habe ich noch nicht. Ich wollte, da sie nur auf dem Bildschirm ausgibt eine void-Methode.


C#-Quelltext
1:
2:
3:
4:
5:
6:
static void Liste(???)
{
.
.
.
}


So in dieser Art....


Th69 - Di 31.03.15 20:56

Schau dir mal die Main-Methode an - dort wird ja auch ein Array übergeben - und nun ersetze string durch deinen Strukturnamen (bzw. du kannst dieselbe Deklaration verwenden, welche du auch als lokale Variable in der Main-Methode für das Array verwendet hast ;- ).


RalphHoffmann - Di 31.03.15 21:04

Hrmpf....:-)

Stimmt....
Ich habe den Kopf der Methode jetzt so:


C#-Quelltext
1:
2:
3:
4:
static void Liste(kiste[] akiste)
{
...
}


und den Aufruf so:


C#-Quelltext
1:
Liste(kleinekiste);                    


und mache jetzt mal weiter....es werden auf jeden Fall keine Fehler mehr angezeigt! :-)))

Vielen Dank für die Hilfe bis hierher....

Gruß
Ralph

ps.: Schön, dass hier auch Newbies geholfen wird...


Th69 - Di 31.03.15 21:07

:zustimm:


RalphHoffmann - Mi 01.04.15 18:48

Hallo Th69,

jepp es klappt wunderbar!!

Danke!

Gruß
Ralph