2016-05-17 10 views
0
namespace ConsoleApplication13 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine("how many footballs would you want?"); 

      int amount = int.Parse(Console.ReadLine()); 
      List<football> ballist = new List<football>(); 

      for (int i = 0; i < amount; i++) 
      { 
       Console.WriteLine("how much should football {0} weigh?", i+1); 
       int weight = int.Parse(Console.ReadLine()); 
       ballist.Add(new football(weight)); 
      } 

      Console.WriteLine("amount of footballs is {0}", amount);    
      ballist.ForEach(s => Console.WriteLine(s.GetWeight())); 
      Console.ReadLine(); 

     } 
    } 

    class football 
    { 
     private int weight = 0; 

     public int GetWeight() 
     { 
      return weight; 

     } 

     public football(int weigh) 
      { 
      weight = weigh; 
      } 

    } 
} 

Hinzufügen von Objekten in einer Liste, mache ich es richtig?Objekte in einer Liste hinzufügen, mache ich es richtig?

+2

Sieht gut aus ... natürlich hängt es ein bisschen davon ab, was Sie später machen wollen, aber ja, Sie werden eine Liste von Fußbällen mit einem Gewicht haben. Sie könnten Ihr Fußballobjekt vereinfachen - aber als Einstieg kommen Sie dorthin. – BugFinder

+0

Es gibt eine spezielle Seite für [codereview] (http://codereview.stackexchange.com/) (für Frage wie "ist mein Code ok?"). Hier ist es offtopic, es sei denn, Ihr Code funktioniert nicht, aber dann fehlen noch Details darüber, was nicht funktioniert, mit welchem ​​Fehler, etc. Sehen Sie sich auch [naming guidelines] (https://msdn.microsoft.com) an. com/de-us/library/x2dbyw72 (v = vs.71). aspx), Klassen-und Methodennamen sollten groß geschrieben werden, obwohl ich selbst nicht vollständig folgen (z. B. würde ich Feld "Gewicht" als "_weight" nennen um Probleme zu vermeiden, die Sie lösen, indem Sie den Parameternamen 'wiegen' ohne' t' angeben. – Sinatr

Antwort

1

Eine mögliche Alternative ist eine Benutzereingabe alle die Gewichte in man gehen und erzeugen die Liste zu lassen:

Console.WriteLine("please, input footballs' weights separated by comma"); 

    String input = Console.ReadLine(); 

    List<football> ballist = input 
    .Split(',') 
    .Select(item => new football(int.Parse(item))) 
    .ToList(); 

Einige Vorschläge auf Football Klasse

// We usually start classes with capital letter 
    class Football { 
    private int m_Weight; 

    // C# is not Java, so use properties, which are more readable 
    public int Weight { 
     get { 
     return m_Weight; 
     } 
     private set { 
     // validate input 
     if (value <= 0) 
      throw new ArgumentOutOfRangeException("value"); 

     m_Weight = value; 
     } 
    } 

    // "weight" - let argument correspond to property 
    public football(int weight) { 
     Weight = weight; 
    } 
    } 
0

Das Hinzufügen zur Liste ist richtig. Ich würde dir empfehlen, die Eigenschaft für das Gewicht zu verwenden.

class football 
    { 
     public int weight { get; set; } 
    } 

Wenn Sie keinen Code auf dem Get/Set haben wollen.

Verwandte Themen