Benutzer mit den meisten Antworten
Cs1503 c#

Frage
-
Hallo,
In meinem Code trit folgender Fehler auf:
Argument 1: cannot convert from 'Libary.Film' to 'int'
In diesem Code:
public void NewFilm(string name1,string description,Duration filmduration) { films = new List<Film>(new Film(name1,description,filmduration)); }
Ich nehme aber in der Film Klasse auch einen String entgegen:
public Film(string name, string description,Duration Durationfilm) { this.Name = name; this.Description = description; filmduration = new Duration(Durationfilm.Hours,Durationfilm.Minutes,Durationfilm.Seconds); }
Ich weiß nicht wieso der Compiler auf Libary.Film kommt, klar erstelle ich dieses Objekt, übergebe doch aber einen string oder?
LG
Antworten
-
Hallo R3turnz,
der Konstruktor von List<Film> nimmt entweder einen int entgegen (Kapazität) oder ein IEnumerable<Film> (Liste mit Filmen). D.h. in Deinem Fall will der Compiler jetzt den int-Konstruktor nutzen, da Du kein IEnumerable<Film>, sondern nur einen Film übergibst. Folglich kommt es zum Fehler, dass er den Film nicht in einen int umwandeln kann.
Lösung ist ganz einfach: Deinen Film einfach in ein Array packen und so dem List<Film>-Konstruktor übergeben, dann wird auch der Konstruktor mit dem IEnumerable<Film> genutzt, da das Array ein IEnumerable<Film> ist.
films = new List<Film>(new[] { new Film(name1, description, filmduration) });
Thomas Claudius Huber
"If you can't make your app run faster, make it at least look & feel extremly fast"
My latest Pluralsight-courses:
XAML Layout in Depth
Windows Store Apps - Data Binding in Depth
twitter: @thomasclaudiush
homepage: www.thomasclaudiushuber.com- Bearbeitet Thomas Claudius HuberMVP Freitag, 21. August 2015 19:33
- Als Antwort markiert R3turnz Freitag, 21. August 2015 20:11
Alle Antworten
-
Hallo R3turnz,
der Konstruktor von List<Film> nimmt entweder einen int entgegen (Kapazität) oder ein IEnumerable<Film> (Liste mit Filmen). D.h. in Deinem Fall will der Compiler jetzt den int-Konstruktor nutzen, da Du kein IEnumerable<Film>, sondern nur einen Film übergibst. Folglich kommt es zum Fehler, dass er den Film nicht in einen int umwandeln kann.
Lösung ist ganz einfach: Deinen Film einfach in ein Array packen und so dem List<Film>-Konstruktor übergeben, dann wird auch der Konstruktor mit dem IEnumerable<Film> genutzt, da das Array ein IEnumerable<Film> ist.
films = new List<Film>(new[] { new Film(name1, description, filmduration) });
Thomas Claudius Huber
"If you can't make your app run faster, make it at least look & feel extremly fast"
My latest Pluralsight-courses:
XAML Layout in Depth
Windows Store Apps - Data Binding in Depth
twitter: @thomasclaudiush
homepage: www.thomasclaudiushuber.com- Bearbeitet Thomas Claudius HuberMVP Freitag, 21. August 2015 19:33
- Als Antwort markiert R3turnz Freitag, 21. August 2015 20:11