' foreach '什么时候停止处理字符串?

本文关键字:字符串 处理 什么时候 foreach | 更新日期: 2023-09-27 18:12:06

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

具体来说,我已经开始得到这个错误:

CS1579 foreach语句不能操作'string'类型的变量,因为'string'不包含'GetEnumerator'的公共定义

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

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

' foreach '什么时候停止处理字符串?

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

已合并补丁,问题已解决