Announcement

Collapse
No announcement yet.

Objektarray als public deklarieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Objektarray als public deklarieren

    Hallo,

    wie kann ich ein Objektarray als public deklarieren, damit ich von "überall" darauf zugreifen kann ?!

    Gruß,

    Timo Schröter

  • #2
    Hi
    <P>
    Ein Objekt Array als Feld sollte, der Objekt- Orientierung zu Liebe, nicht public gemacht werden.
    <P>
    Verwende stattdessen eine Zugriffsmethode/property.
    Z.B.:
    <PRE>
    class EineKlasse {

    private object[] einObjektArray = new object[21];

    public object[] EinObjektArray {
    get {
    return this.einObjektArray;
    }
    }
    }
    </PRE>

    Simo

    Comment


    • #3
      Hallo Simon,

      mir ist nicht ganz klar wie mir das helfen kann...

      Vielleicht kannste Du mir anhand meines Codes ein weiteres Beispiel geben:

      Klasse User:<br>
      public class User {<br>
      ...<br>
      public User(string Vorname, string Nachname, string Email, int Alter)<br>
      {<br>
      ...<br>
      }<br>

      Klasse Form1:<br>
      User[] user = new User[j];<br>

      Nun moecht ich innerhalb der Klasse Form1 auf "user[]" zugreifen, jedoch in einer andere Methode als die, in der ich ihn instanziert habe. Ich habe dein Beispiel eingebaut, aber so richtig hat es nicht funktioniert...

      Vielleicht kennst Du auch ne Seite die mir weiterhelfen kann.

      Gruß,

      Tim

      Comment


      • #4
        Hallo, weiß nicht ob ich dein problem richtig verstanden habe, aber versuch's dochmal so :
        <PRE>
        public class Form1
        {
        private User [] user;

        public Form1()
        {
        ArraySize();
        createObject();
        otherMethod();
        }

        public void ArrySize()
        {
        user = new User[5];
        }

        public void createObject()
        {
        user[0] = new User("a","b","c",1);
        }

        public void otherMethod()
        {
        user[0].OtherMethod();
        }
        }
        </PRE>
        hab das ganze mal alles in einzelnen methoden geschreieben, damit du siehst wie man sowas machen kann.hoffe konnte dir helfen

        mfg movi

        Comment


        • #5
          Hallo Movie,

          so wie ich das sehe hast Du es doch ganz gut verstanden. Aber es funktioniert noch nicht.

          Es geht um folgendes: Ich habe 2 Quellcodedateien, also jeweils eine Klasse. Einmal Form1 (klar) und einmal User, beide liegen im selben Namespace. Nun wird in einer Methode in Form1 das Objektarray instanziert. Mein Problem ist jedoch, das ich nur innerhalb dieser Methode, in der das Objekt instanziert worden ist, damit arbeiten kann. Daher hätte ich es gerne "global". Nur wie ?

          Comment


          • #6
            eine frage willst du es nur so global haben das du nur in der form1 damit arbeiten kannst ? wenn ja dann sollte das eigentlich mit meiner vorigen lösung gehen, das das [] user als klassenmember deklariert wird.
            ode willst du es so haben das du auch von allen anderen klassen darauf zugreifen kannst ?
            am besten du postest mal ein stück quelltext ..

            Comment


            • #7
              Hiho,

              ok, hier ein Beispiel:

              namespace test2<br>
              {<br>
              public class User<br>
              {<br>
              private string vorname;<br>
              private string nachname;<br>
              private string email;<br>
              private int alter;<br><br>

              public User(string Vorname, string Nachname, string Email, int Alter)<br>
              {<br>
              vorname = Vorname;<br>
              nachname = Nachname;<br>
              email = Email;<br>
              alter = Alter;<br>
              }<br><br>

              public string GetVorname() {<br>
              return vorname;<br>
              }<br>
              }<br><br>

              Und ein Schnippsel aus Form1:<br><br>

              public void GetEintraege()<br>
              {<br>
              j = AnzahlEintrage();<br>
              User[] user = new User[j];<br>

              for (i = 0; i < j; i++)<br> {<br>
              string vorname = sr.ReadLine();<br>
              string nachname = sr.ReadLine();<br>
              string email = sr.ReadLine();<br>
              int alter = Int32.Parse(sr.ReadLine());<br>
              user[i] = new User(vorname, nachname, email, alter);<br>
              }<br><br>

              Nun hab ich ja ein Array user[grösse j]. Jetzt will ich aber in der Funktion:<br><br>

              private void lv1_Click(object sender, System.EventArgs e)<br>
              {<br>
              try {<br>
              ListViewItem lv = lv1.SelectedItems[0];<br>

              An dieser Stelle auf user[0] zugreifen und das funktioniert halt nicht.

              Gruß,

              Timo Schroete

              Comment


              • #8
                alles klar, denke habe dein prob gefunden ...
                <PRE>
                public void GetEintraege()
                {
                j = AnzahlEintrage();
                User[] user = new User[j];//hier ist der Fehler

                for (i = 0; i < j; i++)
                {
                string vorname = sr.ReadLine();
                string nachname = sr.ReadLine();
                string email = sr.ReadLine();
                int alter = Int32.Parse(sr.ReadLine());
                user[i] = new User(vorname, nachname, email, alter);
                }
                </PRE>
                du deklarierst das objektarray in dieser methode d.h. es ist nach der ausführung der methode nicht mehr gültig.

                Lösung
                <PRE>
                public class Form1
                {
                //variablen deklaration
                private User [];
                /* es ist wichtig das diese deklartaion in rumpf der klasse form1 steht und nicht in einer Methode, dann kannst du in der ganzen Klasse Form1 auf das objektarray zugreifen */
                .....
                //Konstruktor
                public Form1()
                {
                }
                public void GetEintraege()
                {
                j = AnzahlEintrage();
                user = new User[j];
                //.....
                }

                }
                </PRE&gt

                Comment


                • #9
                  Klappt wunderbar DDDDD

                  Danke,

                  Tim

                  Comment

                  Working...
                  X