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

我有这个错误

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

在这段代码中

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); } 

你忘了调用函数(用()

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

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

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

顺便说一下, FirstOrDefault接受相同的lambda应用于Where,这样你就可以将代码缩减到更简单,更快的速度

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