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

时间:2013-10-27 20:42: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);
}

2 个答案:

答案 0 :(得分:54)

您忘了调用该函数(使用()

答案 1 :(得分:17)

您必须添加括号以调用方法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);