2016-04-27 8 views
-4

Ich durchlaufe ein Problem, wo ich eine Fehlermeldung, dass ich nicht von 'Double' zu 'Car_Management.Car' konvertieren kann. Was fehlt mir hier? Hier sind meine Codes, die ich bisher gemacht habe, wo ich die Autoeigenschaften zu einer Liste hinzufügen muss. Wie kann ich die Liste in eine Textdatei ausgeben?Warum kann ich es nicht zu einem Double oder int oder String von Car_Management.Car konvertieren

namespace Car_Management 
{ 
    class CarDM 
    { 
     public static void save(List<Car> fullList) 
     { 
      Car myCar = new Car(); 
      List<Car> list = new List<Car>() {myCar.Model, myCar.Mileage, myCar.Colour, myCar.Year}; 

      StreamWriter outputFile; 
      outputFile = File.CreateText("List.txt"); 
     } 
     public static void load() 
     { 
      StreamReader inputFile; 
      inputFile = File.OpenText("List.txt"); 
     } 
    } 
} 

Das ist meine andere Klasse

namespace Car_Management 
{ 
    class Car 
    { 
     private int year; 
     private double mileage; 
     private string colour; 
     private string model; 
     private string info; 

     //constructor 
     public Car() 
     { 
      year = 0; 
      mileage = 0; 
      colour = ""; 
      model = ""; 
     } 

     //name properties 
     public string Model 
     { 
      get { return model; } 
      set { model = value; } 
     } 

     public string Colour 
     { 
      get { return colour; } 
      set { colour = value; } 
     } 

     public double Mileage 
     { 
      get { return mileage; } 
      set { mileage = value; } 
     } 

     public int Year 
     { 
      get { return year; } 
      set { year = value; } 
     } 

     //returns string consisting of model, year, mileage, colour 
     public string GetInfo(string sep) 
     { 
      sep = ": "; 
      return model + sep + colour + sep + mileage.ToString("c") + sep + year.ToString(); 
     } 
    } 
} 
+4

'Liste list = new Liste () {myCar.Model, myCar.Mileage, myCar.Colour, myCar.Year};' - was genau soll das machen? Sie sagen, dass Sie versuchen, eine Liste von "Auto" zu erstellen, aber liefern die Komponenten eines "Autos", nicht eines tatsächlichen "Auto" -Objekts. –

+0

Sie sollten dem von Ihnen erstellten Objekt Werte zuweisen. Zum Beispiel Liste list = new Liste () {myCar.Model = "Malibu", myCar.Mileage = 150, myCar.Farbe = color.Red, myCar.Year = 2015}; – Auguste

+0

starten lesen MSDN-Dokumentation und verstehen die '.ToStrng()' Overloads https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx – MethodMan

Antwort

0

Haftungsausschluss: Ich habe nicht einmal Ihre Last/Schreibmethoden buchen, der den Stream-Leser verwenden, wie Sie es keine Implementierung hatte. Wenn Sie Hilfe zur Serialisierung benötigen, stellen Sie bitte eine andere Frage.

Ihr Problem ist Ihre Syntax für Ihren Initialisierer falsch ist. Hier sind gültige Möglichkeiten, wie Sie ein Objekt instanziieren können. Weitere Informationen finden Sie unter Object and Collection Initializers.

Car myCar = new Car(); // no initializers 
Car myCar = new Car(){Model = "Bently", Mileage = 1555, Colour = "Red", Year = 2015}; // with initializer 

Beispiele mit List<Car>

List<Car> list = new List<Car>(); // no initializers 
List<Car> list = new List<Car>() {myCar} ; // with a car instance 
List<Car> list = new List<Car>() {myCar1, myCar2, myCar3} ; // with car instances assuming these instances all exist 

Sie sie auch, obwohl es nicht sehr sauber kombinieren

List<Car> list = new List<Car>() {new Car(){Model = "Bently", Mileage = 1555, Colour = "Red", Year = 2015}} ; // with a car instance 

Auf einer Seite suchen beachten Sie die Eigenschaften AutoProperties umwandeln kann, die sauber helfen können up deinen Code auch ein wenig.

namespace Car_Management 
{ 
    class Car 
    { 
     public Car() 
     { 
      Year = 0; 
      Mileage = 0; 
      Colour = ""; 
      Model = ""; 
     } 

     //name properties 
     public string Model {get;set;} 
     public string Colour {get;set;} 
     public double Mileage {get;set;} 
     public int Year {get;set;} 

     //returns string consisting of model, year, mileage, colour 
     public string GetInfo(string sep) 
     { 
      sep = ": "; 
      return model + sep + colour + sep + mileage.ToString("c") + sep + year.ToString(); 
     } 
    } 
} 
0

Ihre Instanziierung der Liste ist falsch.

public static void save(List<Car> fullList) 
{ 
    Car myCar = new Car(); 
    List<Car> list = new List<Car>() {myCar.Model, myCar.Mileage, myCar.Colour, myCar.Year}; 

    StreamWriter outputFile; 
    outputFile = File.CreateText("List.txt"); 
} 

Was du bist versuchen, hier zu tun ist, um eine Liste von string, double, string zu instanziiert usw.

Was sollten Sie tun, ist entweder: Erstellen Sie das Auto vor-Hand wie folgt aus:

Car myCar = new Car(); 
myCar.Model = "Some Model"; 
myCar.Mileage = 0; 
... 

List<Car> list = new List<Car>(); 
list.add(myCar); 

oder wie Sie versucht:

List<Car> list = new List<Car>(){myCar}; 

oder wenn Sie wollen alles auf einmal tun (NB: Unordentlich und unreadabl e-Code):

List<Car> list = new List<Car(){new Car(){Model = "Some model", Mileage = 0, ... }} 

Persönlich bevorzuge ich die erste Methode, da es einfacher ist, zu lesen und einfacher danach in den Code zu tauchen.

Wenn Sie mehrere Autos haben, können Sie tun: List<Car> list = new List<Car>(){car1, car2, car3}; NACH dem Erstellen der Autos Objekte wie oben gezeigt. Ich hoffe es hilft.

Sie können mehr hier lesen: http://www.dotnetperls.com/list

0

Diese Syntax ist falsch:

Car myCar = new Car(); List<Car> list = new List<Car>() {myCar.Model, myCar.Mileage, myCar.Colour, myCar.Year}; und ich bin nicht sicher, was Sie tun Tring.Wenn Sie versuchen, eine Liste mit einem einzigen Auto zu schaffen, sollten Sie schreiben:

Car myCar = new Car(){ Model = "model1", Mileage = 23000, Colour = "green", Year = 2009 }; List<Car> list = new List<Car>(); list.Add(myCar);

Dadurch wird der Code der Kompilierung machen. Allerdings gibt es andere Probleme wie den nicht verwendeten Parameter fullList und Sie erstellen eine Datei "List.txt" und nie zu schreiben.

Verwandte Themen