c# - `foreach` 什么时候停止处理字符串?

标签 c# visual-studio-2015 .net-micro-framework c#-6.0

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

具体来说,我开始收到此错误:

CS1579 foreach statement cannot operate on variables of type 'string' because 'string' does not contain a public definition for 'GetEnumerator'

很公平,它似乎没有。 但这在我开发代码时有效。它被编译,推送到 NuGet 并在其他几个项目中工作,所以它一定有效。

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

最佳答案

Roslyn 之前的 C# 编译器对字符串进行了特殊处理,并且不需要实现 IEnumerable。因此,string 的 NetMF 实现没有实现 IEnumerable,Roslyn 之前的编译器对此很满意。 Roslyn 显然缺乏对字符串的这种特殊处理,因此破坏了向后兼容性。这是 Roslyn 编译器的重大变化。该问题已迁移到 GitHub 此处:github.com/dotnet/roslyn/issues/11387

补丁已合并,问题现已关闭。

关于c# - `foreach` 什么时候停止处理字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32507919/

相关文章:

c# - MVC5 中的命名约定

typescript - 项目 '<project name>' 不是最新的。输入文件 '<static file>' 在输出文件 '' 之后被修改

typescript - 如何从 JavaScript 文件调用 TypeScript 函数并让它出现在智能感知中?

c# - 项目构建但无法发布

c# - 如何正确检查 IEnumerable 的现有结果

c# - 在 Visual Studio 2008 中调试 Web 服务时如何避免超时错误

c# - 国家不可知的学术水平代表

c# - 是否可以使用 NETMF 对嵌入式设备进行编程以将 geochron 记录写入 Azure?

.net - 学习.Net微框架有哪些好的微 Controller 开发板?

c# - 无法使用 .net micro fw 轮询超声波传感器的脉冲宽度