C# foreach是什么时候停止处理字符串的?
我有许多针对.NET Micro Framework 4.3.2的项目。我在Visual Studio 2013中开发了它们。我刚刚升级到VisualStudio2015,现在我在编译和运行相同的代码时遇到了一些奇怪的问题 具体地说,我开始出现以下错误: CS1579 foreach语句无法对“string”类型的变量进行操作,因为“string”不包含“GetEnumerator”的公共定义 公平地说,它似乎不是但在我开发代码时,这就起作用了。它被编译、推送到NuGet并在其他几个项目中工作,所以它一定工作过 那么,为什么这在Visual Studio 2015中停止工作?我有许多项目使用这个习惯用法来迭代字符串中的字符,我希望我不必全部更改它们…:(C#编译器pre-Roslyn对字符串进行了特殊处理,不需要实现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并在其他几个项目中工作,
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年无效。