2017-05-25 11 views
-2

Ich beginne gerade mit Klassen zu arbeiten. Mein Int age funktioniert nicht mit meiner Eigenschaft Alter. Es ist immer 0.C# Feld, dem nie zugewiesen wurde, hat den Standardwert 0

namespace ConsoleApp1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Stuffers s = new Stuffers("Stuffy McStuff"); 
     } 
    } 

    class Stuffers 
    { 
     private int age; 
     public int Age 
     { 
      get { return age; } set { value = age; } 
     } 
    } 
}  

Zeigt Fehler:

field age never assigned to, and will have default value of 0


ursprünglichen Nicht-MCVE Code

namespace ConsoleApp1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Stuffers s = new Stuffers("Stuffy McStuff"); 
      Console.WriteLine(s.GetName()); 

      Console.Write("{0}, what is your age?", s.GetName()); 
      s.Age = Convert.ToInt32(Console.ReadLine()); 

      Stuffers s2 = new Stuffers("Leeroy"); 
      Console.WriteLine(s.GetAge()); 
     } 
    } 

    class Stuffers 
    { 
     private int age; 
     private string name; 
     public int Age 
     { 
      get { return age; } set { value = age; } 
     } 
     public Stuffers(string nameC) 
     { 
      name = nameC; 
     } 
     public string GetName() 
     { 
      return name; 
     } 
     public int GetAge() 
     { 
      return age; 
     } 
    } 
}  
+0

Hallo Travis, danke für die Frage. Leider möchte die stackoverflow-Community keine Hausaufgaben beantworten (ich bin nicht der, der btw = P gewählt hat). Ich dachte nur, ich würde es dich wissen lassen. – Carlo

+0

@Carlo Woher weißt du, dass das Hausaufgaben sind? Es scheint mir zumindest nicht so. – Sweeper

+0

Es ist keine Hausaufgabe lol Ich lerne nur selbst und probiere Dinge aus. Danke für die Warnung obwohl lol –

Antwort

5

Das ist falsch:

public int Age 
{ 
    get { return age; } set { value = age; } 
} 

Es sollte sein:

public int Age 
{ 
    get { return age; } set { age = value; } 
} 

value der neue Wert, den Sie zuweisen. age ist die Housekeeping-Variable.

Alternativ können Sie einfach tun:

public int Age { get; set; } 

ohne age erklärt.

Auch GetAge() Methode scheint überflüssig, und es ist wahrscheinlich besser GetName in eine get-Unterkunft, die nur zu drehen:

class Stuffers 
{ 
    public int Age 
    { 
     get; set; 
    } 
    public string Name { get; private set; } 
    public Stuffers(string nameC) 
    { 
     Name = nameC; 
    } 
} 
2

Sie sind nicht das Alter auf den Wert

Ändern Sie diese

public int Age 
{ 
    get { return age; } set { value = age; } 
} 

zu diesem

public int Age 
{ 
    get { return age; } set { age = value; } 
} 
Verwandte Themen