我发布了对这个问题的回答,包括最后关于 String.Split() 应该如何接受 IEnumerable<string> 而不是 string[] 的简短咆哮。
这让我思考。如果继承其他所有内容的基 Object 类为 IEnumerable 提供了一个默认实现,这样现在所有内容都返回一个 Enumerator 仅针对一个项目(本身)——除非它被覆盖以执行其他操作,如集合类。
这个想法是,如果像 String.Split() 这样的方法确实接受 IEnumerable 而不是数组,我可以将单个字符串传递给函数,它就可以工作,而不必过多地创建分隔符数组。
我敢肯定有各种各样的理由不这样做,其中最重要的一点是,如果所有东西都实现了 IEnumerable,那么在某些情况下,实现偏离默认值的少数类的行为可能与您预期的不同。但我仍然认为这将是一个有趣的练习:会有什么其他后果?