Autor Beitrag
phill
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 09.06.08 13:42 
Hallo,

wie kann ich aus einer Methode herraus ein Objekt erstellen? Ich würde dem Objekt beim erstellen nämliich gerne direkt werte zuweisen.

Code wie ich es bisjetzt versucht habe:

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:
35:
36:
37:
38:
39:
40:
41:
42:
43:
public class Person
{
    // Field
    public string name;
    public char geschlecht;
    public int alter, id;


    public Person()
    {
        // Standartwerte der Person festlegen
    }
    public void setName(string newName)
    {
        name = newName;
    }
}
class TestPerson
{
    public void createPerson(string namevar, char geschlechtvar, int altervar,int idvar)
    {
        Person namevar = new Person();
        name.geschlecht = geschlechtvar;
        name.alter = altervar;
        name.id = 1;
    }
    static void Main()
    {    
        
        //Person Peter = new Person();
        //Person August = new Person();
        //Person Nicole = new Person();
        // und hier dann  sowas wie
        createPerson("alex","m",22,222);

        System.Console.WriteLine(Peter.id.ToString());
        System.Console.WriteLine(August.id.ToString());
        System.Console.WriteLine(Nicole.id.ToString());
        Peter.setName("Peter");
        System.Console.WriteLine(Peter.name);
        System.Console.ReadLine();
    }
}


Entweder ich bin auf dem völlig falschem weg oder ich hab was falsch gemacht..


Vielen dank schonmal im vorraus,

Philipp
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 09.06.08 14:15 
Hallo Philipp,

dazu gibt es mindestens zwei Möglichkeiten.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
//  erzeuge eine Instanz und gib diese zurück; beachte: nicht void
    public Person createPerson(
        string namevar, char geschlechtvar, int altervar,int idvar)
    {
        Person result = new Person();
        result.name = namevar;
        result.geschlecht = geschlechtvar;
        result.alter = altervar;
        result.id = idvar;
        return result;
    }

//  Aufruf dann so:
        Person Alex = createPerson("alex","m",22,222);

Noch schöner ist ein passender Konstruktor, der die wichtigsten Eigenschaften vorbelegt:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
//  in der Klasse Person
    public Person(string namevar, char geschlechtvar, int altervar,int idvar)
    {
        name = namevar;
        geschlecht = geschlechtvar;
        alter = altervar;
        id = idvar;
    }

//  Aufruf dann so:
        Person Alex = new Person("alex","m",22,222);
Nebenbei solltest Du Dich einmal kundig machen über den Unterschied zwischen internen Feldern (in der Regel private, nicht public) und öffentlichen Eigenschaften und die Schreibweise von Bezeichnern: private überwiegend mit Kleinbuchstaben anfangen, public mit Großbuchstaben. Eine Einführung findest Du z.B. im OpenBook C#.

Jürgen
phill Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 09.06.08 15:44 
Herzlichen dank!

Ich habe mich für die zweite Varinte entschieden, da ich diesen Konstruktor Teil ja schon im Code hatte nur nicht draufgekommen bin das man damit ganz einfach dem Objekt werte beim erstellen zuweißen kann.

Viele Grüße und nochmals danke.

Philipp