2013-10-27 26 views
18

我有这样的错误无法分配方法组到一个隐式类型的局部变量

“无法分配方法组到一个隐式类型的局部变量”

在此代码

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

回答

46

你忘了打电话功能(用()

16

Yo ü必须加括号调用的方法FirstOrDefault

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

而且,当你的代码也使用&操作,在逻辑条件使用正确的一项&&

顺便说一句,FirstOrDefault接受同样的lambda适用于哪里,所以你可以减少你的代码更简单,可能更快

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

感谢您的解释。我遇到了将VB转换为C#的问题。应该标记为IMO的最佳答案。 – JohnnyBizzle

相关问题