【问题标题】:Cannot assign method group to an implicitly-typed local variable无法将方法组分配给隐式类型的局部变量
【发布时间】:2013-11-06 13:07:13
【问题描述】:

我有这个错误

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

在这段代码中

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

【问题讨论】:

    标签: c# windows-phone-8


    【解决方案1】:

    您必须添加圆括号才能调用方法FirstOrDefault

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

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

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

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

    【讨论】:

    • 感谢您的解释。我在将 VB 转换为 C# 时遇到了这个问题。应标记为 IMO 最佳答案。
    【解决方案2】:

    你忘了调用函数(()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-13
      相关资源
      最近更新 更多