Hello 小伙伴们大家好,今天和大家分享一下“字符串的优化”。
首先,通过跟踪 System.String 类,我们看到 string.Format 在最终的实现过程中是重新new了一个 StringBuilder。因此我们可以使用在对字符串进行 Format 操作的时候直接共用一个StringBuilder即可,具体实现如下:
private static StringBuilder stringBuilder = new StringBuilder();
public static string Format(string str, params object[] args)
{
stringBuilder.Remove(0, stringBuilder.Length);
stringBuilder.AppendFormat(str, args);
return stringBuilder.ToString();
}
StringBuilder.Format 的消耗其实也是挺大的,最终调用的是 AppendFormatHelper 这个函数,里面实现也是极其复杂,因此能尽量不用 Format 的时候尽量不用 Format。可以考虑使用 Concat 函数来代替。
string.Concat 每次使用都会重新生成一个 string,然后对其进行数据填充。当我们需要 Concat 的数据比较多的时候,里面每次都会判断填充的数据是否为null,循环体里都会有个objct转string的操作,其实大可不必如此。既然我们之前已经有一个通用的StringBuilder了,可以直接公用即可,每次使用之前清除掉旧数据,实现循环使用。如下图所示:
public static string Concat(string str1, strin