无法将方法组分配给隐式类型的局部变量

XXX*_*XXX 23 c# windows-phone-8

我有这个错误

"无法将方法组分配给隐式类型的局部变量"

在这段代码中

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);
}
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 56

你忘了调用这个函数(带())


Ste*_*eve 18

您必须添加括号以调用方法 FirstOrDefault

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

而且,虽然您的代码也使用&运算符,但在逻辑条件中使用的正确代码是 &&

顺便说一句,FirstOrDefault接受应用于Where的相同lambda,这样你就可以将代码简化为更简单且可能更快

   var frenchvoice = InstalledVoices.All
       .FirstOrDefault(voice => voice.Language.Equals("fr-FR") && 
                                voice.Gender == VoiceGender.Female);
Run Code Online (Sandbox Code Playgroud)