【问题标题】:Why doesn't String class implement IEnumerable<char> in portable library?为什么 String 类不在可移植库中实现 IEnumerable<char>?
【发布时间】:2012-07-19 09:20:49
【问题描述】:

我创建了一个面向 .NET Framework 4 和 Silverlight 5 的 PCL 项目(我使用 Visual Studio 2010 的扩展,而不是 Visual Studio 2012 的可移植项目模板,如果这很重要的话)。 我正在尝试使用System.Linq.Enumerable.Reverse&lt;TSource&gt;() 扩展方法反转字符串,但它不起作用,因为编译器认为System.String 没有实现IEnumerable&lt;char&gt;

【问题讨论】:

  • 你确定它没有实现IEnumerable&lt;char&gt;,还是Intellisense只是隐藏了它?
  • 是的,我确定,当我尝试构建它时出现错误。
  • 嗯刚刚检查了文档,GetEnumerator 确实不是 PCL 的一部分。 MS在想什么……
  • 您能在此处发布文档链接吗?谢谢。
  • String class on MSDN 向下滚动到 GetEnumerator 并注意丢失的 PCL 图标。

标签: .net portable-class-library


【解决方案1】:

可移植类库必须将自身限制在它承诺支持的所有目标平台上可用的类和方法。这里最大的麻烦制造者是 WinRT,CLR 具有将 WinRT 类型映射到托管类型的语言投影。投影不支持的 System.String 方法记录在 this answer 中。 GetEnumerator() 就是其中之一。

【讨论】:

  • 这是有道理的,因为我没有选择 WinRT(实际上,它在框架选择窗口中被称为 Metro 风格应用程序的 .NET)作为目标框架。我猜 PCL 应该作为选定平台/框架的交集。
  • 好吧,PCL 的重点是您可能有一天会选择 WinRT。
  • 似乎我们在这里的看法略有不同,但我现在要接受你的回答,因为我没有看到任何其他有意义的观点。谢谢!
  • 我不明白为什么有一天您可能会选择 WinRT。有一天我可能会选择 Xbox,但这并不意味着 PCL 总是仅限于 Xbox 可以做的事情。你能解释一下吗?
  • @Paul - 你为什么不问个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
相关资源
最近更新 更多