注册后台任务,字典.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()
。
如果您没有检查是否有任务,我建议您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#。