注册后台任务,字典.First() 方法问题

本文关键字:方法 问题 First 后台任务 字典 注册 | 更新日期: 2023-09-27 17:50:48

我正在用Visual Studio 2012开发一个适用于C#的Windows 8小应用程序。由于本教程,我正在尝试在后台注册任务:

http://msdn.microsoft.com/en-us/library/windows/apps/jj709906.aspx

但是,这一行给了我一个错误("第一"一词带有下划线(:

var iter = Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks
    .first();

这是错误:

"System.Collections.Generic.IReadOnlyDictionary"不包含"first">

的定义,并且找不到接受类型为"System.Collections.Generic.IReadOnlyDictionary"的第一个参数的扩展方法"first"(您是否缺少使用指令或程序集引用?(MainPage.xaml.cs

所以我检查了是否所有的库都在这里。看起来是的,其中包括:

using System.Collections.Generic;

我在谷歌上搜索了我的错误并查找有关IReadOnlyDictionary的内容,但没有找到任何东西,而且由于我是Windows开发的初学者...我请求你的帮助:)

非常感谢,

注册后台任务,字典.First() 方法问题

似乎你想要First(),你用的是first()

如果您没有检查是否有任务,我建议您FirstOrDefault()。否则你会得到一个例外。

如果仍然没有获得 First(( 方法,请检查导入的内容:

using System.Linq;

C# 区分大小写! First有一个大写F

var iter = Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks
    .First();

System.Linq相关的命名空间导入扩展方法First。它不是任务集合的成员,而是静态类System.Linq.Enumerable的成员。

必须导入此命名空间才能使用扩展方法

using System.Linq;

此命名空间中的 Extension 方法扩展IEnumerable<T>,在您的情况下由任务集合实现。

扩展方法看起来像是它们扩展的类型的成员,但实际上这只是编译器的魔术。编译器在内部将代码转换为以下内容:

var iter = Enumerable.First(
    Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks);

你也可以这样称呼它。

First()不是first()。 C# 是一种区分大小写的语言。替换为

var iter = Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks
.First();

但是,如果您没有验证该任务是否存在于代码中的其他位置,我也会选择BlueM的潜水。

您无法找到有关问题的更多信息的原因是,抛出的错误只是说明找不到您调用的方法。 前几天我遇到了同样的问题,还有额外的分号。 我在互联网上搜索了大约一个小时,然后我回头看了看我的代码,意识到我做了什么。

尽管这些错误代码可能会令人困惑,但如果您查看消息的末尾,

(are you missing a using directive or an assembly reference?)

我们知道First()是我们可以调用的方法,它是预定义的。 从逻辑上讲,我们知道,如果我们调用的方法甚至不接受参数并且是预定义的,但仍会抛出错误,那么作为开发人员,这一定是我们的错误。 我希望这有所帮助,不确定您是编程新手还是只是 c#。