Entwickler-Ecke

C# - Die Sprache - Aus einer Methodeherraus ein Objekt erstellen


phill - Mo 09.06.08 13:42
Titel: Aus einer Methodeherraus ein Objekt erstellen
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:


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 - Mo 09.06.08 14:15

Hallo Philipp,

dazu gibt es mindestens zwei Möglichkeiten.


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:

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# [http://www.galileocomputing.de/openbook/csharp/].

Jürgen


phill - 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