正如标题所说:为什么string.Join需要采用数组而不是IEnumerable?这让我很烦,因为当我需要从LINQ表达式的结果创建一个连接字符串时,我必须添加一个.ToArray().
我的经验告诉我,我在这里遗漏了一些明显的东西.
升级到.NET 4.0并使用接受的重载IEnumerable<string>.否则,只是接受这是一个长期未解决的问题,直到.NET 4.0才解决.您也可以通过创建自己的扩展方法来解决问题!
public static class StringEnumerableExtensions {
public static string Join(this IEnumerable<string> strings, string separator) {
return String.Join(separator, strings.ToArray());
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
IEnumerable<string> strings;
Console.WriteLine(strings.Join(", "));
Run Code Online (Sandbox Code Playgroud)
JoinIEnumerable<T>在.NET 4中引入了引发争议的超载 - 如果你不使用.NET 4,那么我担心你会因传递数组或编写自己的实现而陷入困境.
我猜测的原因很简单,当框架首次设计时,它被认为不够重要.IEnumerable<T>LINQ的引入变得更加突出.
(当然,.NET在设计时没有泛型类型,但IEnumerable如果他们认为值得的话,他们没有理由不能使用普通的非泛型.)
而且也没有理由,你为什么不能推出自己的版本,Join这需要一个IEnumerable<T>,如果你觉得你需要它,你就无法升级到.NET 4.
| 归档时间: |
|
| 查看次数: |
308 次 |
| 最近记录: |