Methode in einer Klasse callen?



  • Hey Leute,

    Ich würde gerne ein Array innerhalb einer Klasse durch eine Methode initialisieren lassen.

    Dazu nutze ich das keyword "out" welches mir ja helfen soll die Referenz dem aufrufenen Array zuzuweisen. Leider funktioniert das irgendwie nicht ganz.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace WarHex
    {
        class Feld
        {
            public int[] feld_array;
            int zahl;
    
            public Feld(int zahl)
            {
                this.zahl = zahl;
                Console.WriteLine("Objekt der Klasse Feld erstellt...");
            }
    
            public void initFeld(out int[] arr)
            {
    
                arr = new int[zahl];
    
                for (int i = 0; i < zahl-1; i++)
                {
                    arr[i] = 0;
                }
                Console.WriteLine("Feld mit {0} Stellen erstellt...", zahl);
            }
    
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                Feld feld = new Feld(55);
            }
        }
    }
    

    Das feld_array oben soll durch die Methode initFeld initialisiert werden. Leider bekomme ich das innerhalb einer Klasse nicht hin - was jedoch wichtig wäre um andere Methoden und auch Objekte auf dieses Member zugreifen lassen zu können.

    Was genau übersehe ich hier?



  • Und ich verstehe nicht was du nicht verstehst. Ruf initFeld einfach im Konstruktor auf 😕
    Wenn's das nicht ist, verstehe ich nicht ganz was du eigentlich machen willst.

    Wobei es vermutlich auch noch ne bessere Lösung dafür gibt was du eigentlich machen willst.



  • public Feld(int zahl)
            {
                this.zahl = zahl;
                Console.WriteLine("Objekt der Klasse Feld erstellt...");
    
    feld_array = initFeld();
            }
    
            public int[] initFeld()
            {
    
               int[] arr = new int[zahl];
    
                for (int i = 0; i < zahl-1; i++)
                {
                    arr[i] = 0;
                }
                Console.WriteLine("Feld mit {0} Stellen erstellt...", zahl);
    return arr;
            }
    

    ungetestet



  • Ich wollte nur mal anmerken, dass Arrays in C# mit dem Defaultwert des Typs initialisiert werden. Die Schleife ist also unnötig, womit die ganze Funktion rausfliegen kann.


Anmelden zum Antworten