web-dev-qa-db-fra.com

Impossible d'affecter un groupe de méthodes à une variable locale implicitement typée

J'ai cette erreur

"Impossible d'affecter un groupe de méthodes à une variable locale implicitement typée"

dans ce code

private async void Button_Click_2(object sender, RoutedEventArgs e)
{
    var frenchvoice = InstalledVoices.All.Where(voice => voice.Language.Equals("fr-FR") & voice.Gender == VoiceGender.Female).FirstOrDefault; // in this line
    sp.SetVoice(frenchvoice);
    await sp.SpeakTextAsync(mytxt);
}
25
XXXX

Vous avez oublié d'appeler la fonction (avec ())

58
SLaks

Vous devez ajouter les crochets pour appeler la méthode FirstOrDefault

   var frenchvoice = InstalledVoices.All
       .Where(voice => voice.Language.Equals("fr-FR") && 
              voice.Gender == VoiceGender.Female)
       .FirstOrDefault();

Et, alors que votre code fonctionne également à l'aide de l'opérateur &, le bon à utiliser dans une condition logique est &&

Soit dit en passant, FirstOrDefault accepte le même lambda appliqué pour Where afin que vous puissiez réduire votre code à un plus simple et probablement plus rapide

   var frenchvoice = InstalledVoices.All
       .FirstOrDefault(voice => voice.Language.Equals("fr-FR") && 
                                voice.Gender == VoiceGender.Female);
19
Steve