Eri*_*ndi 2 c# optimization extension-methods memory-management
好,
我们的代码中有很多where子句.我们只是尽可能多的方式来产生一个字符串来表示的条件.我试图想出一个干净的方式如下:
public static string Join<T>(this IEnumerable<T> items, string separator)
{
var strings = from item in items select item.ToString();
return string.Join(separator, strings.ToArray());
}
Run Code Online (Sandbox Code Playgroud)
它可以使用如下:
var values = new []{1, 2, 3, 4, 5, 6};
values.StringJoin(",");
// result should be:
// "1,2,3,4,5,6"
Run Code Online (Sandbox Code Playgroud)
所以这是一个很好的扩展方法,可以完成一项非常基础的工作.我知道简单的代码并不总是变成快速或有效的执行,但我只是好奇我能用这个简单的代码错过了什么.我们团队的其他成员争辩说:
任何专家都会加入?
问候,
埃里克.
关于第一个问题,您可以添加另一个'formatter'参数来控制每个项目转换为字符串:
public static string Join<T>(this IEnumerable<T> items, string separator)
{
return items.Join(separator, i => i.ToString());
}
public static string Join<T>(this IEnumerable<T> items, string separator, Func<T, string> formatter)
{
return String.Join(separator, items.Select(i => formatter(i)).ToArray());
}
Run Code Online (Sandbox Code Playgroud)
关于后两个问题,我不担心它,除非你后来遇到性能问题并发现它是一个问题.然而,它不太可能成为瓶颈......