Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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# foreach是什么时候停止处理字符串的?_C#_Visual Studio 2015_.net Micro Framework_C# 6.0 - Fatal编程技术网

C# foreach是什么时候停止处理字符串的?

C# foreach是什么时候停止处理字符串的?,c#,visual-studio-2015,.net-micro-framework,c#-6.0,C#,Visual Studio 2015,.net Micro Framework,C# 6.0,我有许多针对.NET Micro Framework 4.3.2的项目。我在Visual Studio 2013中开发了它们。我刚刚升级到VisualStudio2015,现在我在编译和运行相同的代码时遇到了一些奇怪的问题 具体地说,我开始出现以下错误: CS1579 foreach语句无法对“string”类型的变量进行操作,因为“string”不包含“GetEnumerator”的公共定义 公平地说,它似乎不是但在我开发代码时,这就起作用了。它被编译、推送到NuGet并在其他几个项目中工作,

我有许多针对.NET Micro Framework 4.3.2的项目。我在Visual Studio 2013中开发了它们。我刚刚升级到VisualStudio2015,现在我在编译和运行相同的代码时遇到了一些奇怪的问题

具体地说,我开始出现以下错误:

CS1579 foreach语句无法对“string”类型的变量进行操作,因为“string”不包含“GetEnumerator”的公共定义

公平地说,它似乎不是但在我开发代码时,这就起作用了。它被编译、推送到NuGet并在其他几个项目中工作,所以它一定工作过

那么,为什么这在Visual Studio 2015中停止工作?我有许多项目使用这个习惯用法来迭代字符串中的字符,我希望我不必全部更改它们…:(

C#编译器pre-Roslyn对字符串进行了特殊处理,不需要实现
IEnumerable
。因此字符串的NetMF实现没有实现
IEnumerable
,pre-Roslyn编译器对此很满意。Roslyn显然缺乏对字符串的特殊处理,因此中断了向后的compa兼容性。这是Roslyn编译器中的一个突破性更改。该问题已迁移到GitHub此处:GitHub.com/dotnet/Roslyn/issues/11387


一个补丁被合并了,问题现在已经解决。

似乎无法在常规的.NET或.NET for Windows应用商店应用程序项目中使用新的编译器和所有东西进行复制。毕竟可能是一个微框架问题。它确实起作用:因此,这可能是c#6的一个变化。它在VS 2015中使用.NET Framework 4、4.5和4.6时对我很好这一定是一个微框架问题。你确定要在Visual studio和Visual studio中使用相同的Fx版本4.3.2吗?@HenkHolterman是的,肯定。我使用的是Netduino.IP,只有一个版本可用。它在VS2013中有效,但在2015年无效。