Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 注册后台任务,Dictionary.First()方法问题_C#_Visual Studio 2012_Windows 8 - Fatal编程技术网

C# 注册后台任务,Dictionary.First()方法问题

C# 注册后台任务,Dictionary.First()方法问题,c#,visual-studio-2012,windows-8,C#,Visual Studio 2012,Windows 8,我正在用Visual Studio 2012为C#中的Windows 8开发一个小应用程序。由于本教程,我正在尝试在后台注册任务: 但是,这一行给了我一个错误(单词“first”下面划线): 这就是错误: “System.Collections.Generic.IReadOnlyDictionary”不包含“first”的定义,并且找不到接受“System.Collections.Generic.IReadOnlyDictionary”类型的第一个参数的扩展方法“first”(是否缺少usin

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

但是,这一行给了我一个错误(单词“first”下面划线):

这就是错误:

“System.Collections.Generic.IReadOnlyDictionary”不包含“first”的定义,并且找不到接受“System.Collections.Generic.IReadOnlyDictionary”类型的第一个参数的扩展方法“first”(是否缺少using指令或程序集引用?)

所以我检查了所有的图书馆是否都在这里。看起来是的,其中:

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
,它首先导入
。它不是tasks集合的成员,而是static类
System.Linq.Enumerable的成员

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

using System.Linq;
此命名空间中的扩展方法扩展了案例中由任务集合实现的
IEnumerable

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

var iter = Enumerable.First(
    Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks);
你也可以这样称呼它。

First()
不是
First()
。C#是一种区分大小写的语言。取代

var iter = Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks
.First();
但如果您不验证任务是否存在于代码中的其他位置,我也会接受BlueM的建议

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

虽然这些错误代码可能会让人困惑,但如果您查看消息的结尾

(是否缺少using指令或程序集引用?


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

谢谢!(其他答案也是如此。)所以问题的根源是微软教程中的一个错误……对于在MSDN教程的下一部分中遇到问题的人,请检查以下内容:
var iter = Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks
.First();