Pouvez-vous s'il vous plaît laissez-moi savoir pourquoi j'obtiens cette erreur

CS0029 Impossible de convertir implicitement le type «chaîne» en «UserQuery.Director»

Sur

m.DirectorName = "Quelqu'un";

À:

void Main()
{
    Movie m = new Movie();
    m.Name = "Matrix";
    m.DirectorName = "Someone";
    Console.WriteLine(m.Name);
}

public class Director
{
    public string Name { get; set;}
}

public class Movie
{
    public string Name { get; set;}
    public Director DirectorName { get; set; }
}
c#
0
Behseini 20 avril 2017 à 19:44

3 réponses

Meilleure réponse

DirectorName n'est pas une chaîne. Vous ne pouvez donc pas lui attribuer de chaîne. Vous pouvez lui affecter un directeur. Étant donné que la propriété DirectorName représente en fait un directeur, elle est mal nommée. Changez votre classe de film pour ceci:

public class Movie
{
     public string Name { get; set; }

     public Director MovieDirector { get; set; }
}

Et votre méthode code à ceci:

 //Create a movie and set the name property
 Movie m = new Movie();
 m.Name = "Matrix";

 //Create a director and set the name property
 Director d = new Director();
 d.Name = "Someone";

 //Assign the director to the movie by setting the MovieDirector property
 m.MovieDirector = d;

 //Print out the movie's director's name.
 Console.WriteLine(m.MovieDirector.Name);

Il existe également une syntaxe abrégée pour cela, utilisant des initialiseurs d'objets:

Movie m = new Movie
{
    Name = "Matrix",
    MovieDirector = new Director { Name = "Someone" }
};
3
mason 20 avril 2017 à 16:56

DirectorName est un type de Director, vous essayez de lui passer une valeur de chaîne.

0
Sachith 20 avril 2017 à 16:50

Dans votre film de classe, vous avez une référence à une classe. Si vous souhaitez modifier la chaîne dans la classe Director, faites m.DirectorName.Name

-1
user7897104 20 avril 2017 à 16:49