Struct in Array abspeichern



  • Hallo,
    ich habe folgendes Problem in C#, ich habe eine Struktur die in der Klasse vereinbart ist, in meiner main Funktion habe ich ein array, in dem ich die Struktur, welche in einer anderen Methode beschrieben wird, spichern will.
    Wie kann ich also die beschrieben Struktur als Element in das Array einer anderen Methode übergeben?



  • Kannst du uns mal etwas Code zeigen, das wir das visuallisiert vor der Nase haben?



  • Firefighter schrieb:

    Kannst du uns mal etwas Code zeigen, das wir das visuallisiert vor der Nase haben?

    Warum?
    Sag bloß Du verstehst Die Frage nicht. Ist doch Sonnenklar was der OP wissen will 😃


  • Administrator

    struct Test
    {
      private int m_x;
      private int m_y;
    
      public int X { get { return m_x; } }
      public int Y { get { return m_y; } }
    
      public Test(int x, int y)
      {
        m_x = x;
        m_y = y;
      }
    }
    
    class Program
    {
      static Test CreateTest()
      {
        return new Test(0, 1);
      }
    
      static void Main(string[] args)
      {
        var arr = new Test[10];
    
        for(int i = 0; i < arr.Length; ++i)
        {
          arr[i] = CreateTest();
        }
    
        // ... verwende arr
      }
    }
    

    Falls du nicht dies suchst, dann musst du es besser erklären, was du tatsächlich suchst. Nach dem Entziffern deines Beitrages, hat sich eine Frage geformt, auf welche diese Antwort zutrifft 😉

    Grüssli



  • Sorry für die späte Rückmeldung, bin beim Renovieren und musste mein Pc für ein weilchen einmotten.
    Also hier mal ein Stück Code

    class Program
        {
            // Struktur für die Daten
            public struct Kiste
            {
                public int Nummer;
                public int Volumen;
            }
    
            static void Main(string[] args)
            {
                //Array für Stuktur erzeugen
                Kiste[] lager = new Kiste[100];
    
                //Alle Werte 0 setzen
                int pos = 0;
                int i;
                for (i = 0; i < lager.Length; i++)
                {
                    lager[i].Nummer = 0;
                    lager[i].Volumen = 0;
                };
    
                Console.WriteLine("Kistennummer eingeben:");
                pos = Convert.ToInt32(Console.ReadLine());
                build(pos); 
            }
    
            static void build(int pos)
            {
                Kiste nkiste = new Kiste();
                nkiste.Nummer = pos;
                 Console.Write("Geben Sie das Volumen der Kiste Nr. {0} ein: ", pos);
                 nkiste.Volumen = Convert.ToInt32
                    (Console.ReadLine());;     
            }
    

    nun will ich die erstellte Kiste in dem Array der Main Methode unter der Position ablegen um später darauf zurückgreifen zu können.



  • Hallo,

    lass dir von der build-Methode (btw. Methoden sollten mit einem Großbuchstaben beginnen!) die Kiste als Return-Wert zurückgeben. Dann kannst du die neu erzeugte Kiste entsprechend zuweisen:

    {
       // ...
       lager[pos] = Build(pos);
    }
    
    static Kiste Build(int pos)
    {
      Kiste kiste = new Kiste();
      // ...
      return kiste; 
    }
    

    Ups, ich sehe gerade, daß Dravere dies ja schon gepostet hatte - warum hast du das denn noch nicht umgesetzt?

    P.S. Das Nullsetzen der Kisten kannst du dir ersparen, da dies schon automatisch gemacht wird.


Log in to reply