Autor Beitrag
Xvidia
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Mi 07.04.10 12:47 
Meine Frage ist, wie man z.B den Wert von Integer x der Klasse class1 dem Integer y der Klasse class2 übertragen kann.

Beispiel:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
class Class1
{
    void function()
    {
        int x = 1;
    }
}

class Class2
{
    void function2();
    {
        int y = x;
    }
}


Ich hoffe ihr könnt mir helfen :>
Nemag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 132
Erhaltene Danke: 2



BeitragVerfasst: Mi 07.04.10 13:16 
Servus

wenn du die Variablen innerhalb der jeweiligen Funktion deklarierst kannst du natürlich nicht darauf zugreifen. Im Allgemeinen greift man auf Eigenschaften der jeweiligen Klasse zu. (direktes Zugreifen auf Klassenvariablen ist unsauber und sollte vermieden werden.)

Schau dir in diesem Zusammenhang auch die Zugriffsmodifizierer (public, private, protected, ...) an. Wenn du diese weglässt wird standardmäßig private genommen, d.h. das außerhalb der Klasse nicht auf die Eigenschaften, Methoden,... zugegriffen werden kann.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
class Class1
{
    //Klassenvariable
    private int zahl;
    //Eigenschaft
    public int Zahl{
      get {
        return zahl;
      }
    }

    //Konstruktor
    public Class1()
    {
      zahl = 0;
    }

    //öffentliche Methode - auf diese kann bei Instanziierung der Klasse zugegriffen werden.
    public void Addiere()
    {
        zahl++; //entspricht zahl = zahl + 1;
    }
}

class Class2
{
    public Class2();
    {
        Class1 cl = new Class1(); 
        Console.WriteLine(cl.Zahl);
        cl.Addiere();
        Console.WriteLine(cl.Zahl);
    }
}
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 07.04.10 13:20 
Zuerst mal musst du x auch in der Klasse speichern. Das kannst du zum Beispiel mit einem PRoperty machen
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
class Class1
{
   // property
   public int Value { get; private set; }

   void function ()
   {
       Value = 1;
   }
}


Nachdem du die so erstellt hast, kannst du auf sie zugreifen mit einer <Instanz der Class1>.Value

So kannst du den Wert der Class zwei übergeben
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
class Class2
{
    void functoin2(int value)
    {
       int y = value;
    }
}


Aufruf wäre dann <instanz der class2>.function2(<instanz der class1>.Value);

Aber ich denke das macht alles gar keinen Sinn.

Wenn du programmieren willst, musst du bei den Grundlagen anfangen und diese verstehen. Es bringt nichts zusammenhanglose Einzelfälle umzusetzen. Deshalb rate ich dir ein Buch zur Hand zu nehmen und dir die absoluten Grundlagen anzueignen.

Schlagwort für dein Problem hier ist objektorientiertes Programmieren und gibt es in jedem Programmieranfänger Buch, wie zum Beispiel im Galileo Openbook C# Kapitel 2.

Gruß