none
Cs1503 c# RRS feed

  • 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

    Freitag, 21. August 2015 19:10

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


    Freitag, 21. August 2015 19:31

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


    Freitag, 21. August 2015 19:31
  • Veieln Dank für deine Antwort, ich hab da aber irgendetwas vertauscht. Ich wolltee eigentlich normal auf die Add Methode zugreifen, aber naja War ein langer Tag.LG

    Freitag, 21. August 2015 20:20