• C#11字符串比较操作的正确使用方式(2022)
  • 发布于 2个月前
  • 332 热度
    0 评论
在项目开发中,C#正确使用字符串操作可以减少垃圾回收压力。本文讲述在C#中的几种字符串操作方法,可以提高程序性能。
1、使用str.Length == 0做空串比较
  string str="";
    if (str.Length == 0){
      Console.WriteLine("为空!");}
或者使用if(str==String.Empty)其次使用if(str=="")。

2、使用string.Empty给一个空字符串变量赋初始值
string.Empty不占用内存空间,而str==""的方式是具体的实现,是占用空间的。
string str=string.Empty;
3、避免不必要的字符串ToUpper、ToLower类操作而使用String.Compare
String.Compare可实现忽略字符串大小写,而ToUpper、ToLower这类方法均会重新生成字符串对。
    string str1="堆代码:www.duidaima.com";
    string str2="堆代码:WWW.DUIDAIMA.COM";
    //推荐使用
    if (string.Compare(str1,str2,true)==0)
      Console.WriteLine("相等!");
    //不推荐
    if (str1.ToUpper()==str2.ToUpper())
       Console.WriteLine("相等!");
4、正确使用StringBuilder进行字符串拼接操作
如果要构造一个较长的字符串,尤其是拼接超过10次时(经验值),就应使用StringBuilder做字符串拼接操作。
 Stopwatch timer = new Stopwatch();
 string s = null;
 timer.Start();
 for (int i = 0; i < 66666; i++)
 {
     s += (i + 1) + "、duidaima.com堆代码";
 }
 timer.Stop();
 decimal micro = timer.Elapsed.Ticks / 10m;
 Console.WriteLine($"拼串耗时:{micro}");
 StringBuilder sb = new StringBuilder();
 timer.Restart();
 for (int i = 0; i < 66666; i++)
 {
     sb.Append(i + 1);
     sb.Append("、duidaima.com堆代码 ");
 }
 string t = sb.ToString();
 timer.Stop();
 micro = timer.Elapsed.Ticks / 10m;
 Console.WriteLine($"StringBuilder耗时:{micro}");
另外避免滥用StringBuilder类似str1+str2+str3+str4的字符串拼接操作会被编译为 String.Concat(str1,str2,str3, str4),效率反而高于StringBuilder。
5、创建StringBuilder应指定初始大小
StringBuilder默认的初始大小为16,一旦超过即需要Resize一次并增加GC压力。建议根据经验值为其指定初始大小,比如最大有128个中文字符,那么初始为256。
StringBuilder sb = new StringBuilder(256);

用户评论