2016-04-18 2 views
0
class Person 
{ 
    public int age; 
    public string haircolor; 
    public string name; 
} 

class Program 
{ 
    static void skapaPerson(string name, string haircolor, int age) { 
    Console.Write("Vad är personens namn? "); 
    name = Console.ReadLine(); 
    Console.Write("Hur gammal är personen?"); 
    age = int.Parse(Console.ReadLine()); 
    Console.Write("Vad är personens hårfärg? "); 
    haircolor = Console.ReadLine(); 
} 

static void Main(string[] args) 
{ 
    Person Person1 = new Person(); 
    skapaPerson(Person1.name, Person1.haircolor, Person1.age); 
    Console.Write("{0} {1} {2}", Person1.name, Person1.haircolor, Person1.age); 
    Console.ReadLine(); 
} 

Was ich suche ist, wie die Werte der verschiedenen Klassenelemente mit der Methode zuweisen, so dass ich ein bestimmtes Element zu einem bestimmten Zeitpunkt bearbeiten kann.Bearbeiten Sie ein Klassenelement mit einer Methode in C#

Der Schreibvorgang am Ende war nur zum Testen und im Moment gibt der Schreibvorgang nur "0" für mich zurück.

Wenn ich in der Lage wäre, würde ich auch gerne wissen, wie man neue Klassenelemente mit einer anderen Methode erstellt.

+3

Übergeben Sie das Objekt "Person" anstelle von Name, Haarfarbe und Alter getrennt. Und ich schlage vor, dass Sie Jon Skeets Beitrag über [parameter passing in C#] lesen (http://www.yoda.arachsys.com/csharp/parameters.html). – juharr

Antwort

3

Statt explizit in jedem einzelnen Objekt vorbei Überlegen Sie, ob Sie das tatsächliche Person-Objekt an Ihre Methode übergeben und die Eigenschaften innerhalb Ihrer Methode festlegen:

static void skapaPerson(Person p) { 
    Console.Write("Vad är personens namn? "); 
    p.name = Console.ReadLine(); 
    Console.Write("Hur gammal är personen?"); 
    p.age = int.Parse(Console.ReadLine()); 
    Console.Write("Vad är personens hårfärg? "); 
    p.haircolor = Console.ReadLine(); 
} 

zusammen mit:

// Create an instance of your person 
Person Person1 = new Person(); 
// Set it's properties 
skapaPerson(Person1); 

Sie können see an interactive example of this in action here.

+0

Danke! Ich weiß nicht, warum ich selbst nicht daran gedacht habe. –

3

Ihre Klasse wie dies

static Person skapaPerson() 
{ 
    Person pResult = new Person(); //create new Person object here 
    Console.Write("Vad är personens namn? "); 
    pResult.name = Console.ReadLine(); 
    Console.Write("Hur gammal är personen?"); 
    pResult.age = int.Parse(Console.ReadLine()); 
    Console.Write("Vad är personens hårfärg? "); 
    pResult.haircolor = Console.ReadLine(); 
    return pResult; //return object with entered data 
} 

static void Main(string[] args) 
{ 
    Person Person1 = skapaPerson(); //Person 1 is the result of skapaPerson() 
    Console.Write("{0} {1} {2}", Person1.name, Person1.haircolor, Person1.age); 
    Console.ReadLine(); 
} 

aussehen soll, wenn Sie Daten in Ihrer skapaPerson Methode sammeln möchten, können Sie in ein Person Objekt erstellen und senden Sie es

Verwandte Themen