Array mit Größenangabe aus Variable erstellen!



  • Hi,
    ich will ein Array in einer Klasse erstellen mit einer Größe, die in anderen Variablen steht. C# sagt nun, das diese Variablen static sein müssen, auch kein Problem. Aber nun kann ich nicht mehr auf die Variablen von ausherhalb der Klasse zugreifen. Es kommt immer:

    "Auf den statischen Member "Nevu.cnevu.weltx" kann nicht mit einem Instanzenverweis zugegriffen werden. Qualifizieren Sie ihn stattdessen mit einem Typnamen."

    Hier der Betreffende Code:

    private void Form1_Load(object sender, EventArgs e)
            {
    
             DrawingArea = new Bitmap(
             nevu.weltx, ///FEHLER
             nevu.welty, ///FEHLER
             System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            }
    
        }
        class cnevu
        {
            static public int weltx = 200;
            static public int welty = 200;
            int[,] welt=new int[weltx,welty];
        }
    

    Ich hoffeihr könnt mir helfen!

    Danke!



  • Richter schrieb:

    ich will ein Array in einer Klasse erstellen mit einer Größe, die in anderen Variablen steht. C# sagt nun, das diese Variablen static sein müssen

    Im allgemeinen nicht. Nur wenn du dein Array sofort initialisierst. (Könntest du auch in dem Konstruktor machen)

    Aber nun kann ich nicht mehr auf die Variablen von ausherhalb der Klasse zugreifen. Es kommt immer:

    "Auf den statischen Member "Nevu.cnevu.weltx" kann nicht mit einem Instanzenverweis zugegriffen werden. Qualifizieren Sie ihn stattdessen mit einem Typnamen."

    Jo. Da die Variable statisch ist schreibt, man

    cnevu.weltx
    //statt
    nevu.weltx
    
    //#--------------
    
    //also
    Klassenname.variable
    
    //und nicht
    
    Instanzname.variable
    

    Ausserdem

    cnevu nevu=new cnevu(); //ist echt nicht schön.
    
    World theWorld=new World(); //ist doch viel leserlicher, oder?
    


  • Danke!
    Das funktioniert!
    Dein

    World theWorld=new World();
    

    ist vielleicht leserlicher aber beschreibt nicht den Sinn der Klasse 😉

    Trozdem DANKE!



  • Jo. War auch nicht das Ziel. Es ging allgemein um den Stil der Namensgebung. Die Aussage sollte sein: "Du hättest auch was leserliches als cnevu finden können. Und cnevu nevu=new cnevu(); sieht echt schwierig aus"

    Vielleicht sowas wie "NewEvolution nevu=new NewEvolution();"? 😉



  • Wow ein Hellseher 😉


Anmelden zum Antworten