.NET C#基础教程第21天:StringComparison

作者:微信公众号:【架构师老卢】
6-10 9:42
48

概述:介绍无论是搜索、排序还是平等;如何比较字符串会显著影响应用程序性能。本文演示了在 .NET 中使用选项进行高效字符串比较的重要性StringComparison学习目标字符串比较效率低下的问题使用 StringComparison 进行高效的字符串比较选择正确的 StringComparison 选项开发人员的先决条件基本了解 C# 编程语言。开始字符串比较效率低下的问题请考虑大多数开发人员用于字符串比较的以下常用方法:// Inefficient string comparison bool equal = string1.ToLower() == string2.ToLower();该方

介绍

无论是搜索、排序还是平等;如何比较字符串会显著影响应用程序性能。本文演示了在 .NET 中使用选项进行高效字符串比较的重要性StringComparison

学习目标

  • 字符串比较效率低下的问题
  • 使用 StringComparison 进行高效的字符串比较
  • 选择正确的 StringComparison 选项

开发人员的先决条件

  • 基本了解 C# 编程语言。

开始

字符串比较效率低下的问题

请考虑大多数开发人员用于字符串比较的以下常用方法:

// Inefficient string comparison  
bool equal = string1.ToLower() == string2.ToLower();
  • 该方法为每个比较创建一个新的字符串内存分配,从而导致不必要的分配。考虑一种具有频繁请求的方法,该方法可能会降低应用程序性能。ToLower
  • 该方法是区域性敏感的,这意味着它可能会根据执行线程中设置的当前区域性生成不同的结果。ToLower

使用 StringComparison 进行高效的字符串比较

.NET 提供了一个功能强大的枚举 ,旨在解决这些效率低下的问题。StringComparison

// Efficient string comparison  
bool equal = string.Equals(string1, string2, StringComparison.OrdinalIgnoreCase);

前面提到的方法以旧的字符串比较方式解决了这两个问题。

  • 没有不必要的分配
  • 提高性能

选择正确的 StringComparison 选项

  • **序数:**用于文化规则不相关的大多数通用比较。这是最快的选择。
  • **OrdinalIgnoreCase:**非常适合不适用文化规则的不区分大小写的比较。
  • CurrentCulture 和 CurrentCultureIgnoreCase: 在比较向用户显示的字符串时使用,其中遵守区域性规则很重要。
  • **InvariantCulture 和 InvariantCultureIgnoreCase:**适用于需要跨不同区域性保持一致性的方案,例如存储和检索数据。

创建另一个名为的类,并添加以下代码片段StringComparisons

public static class StringComparisons  
{  
    private static readonly string string1 = "test";  
    private static readonly string string2 = "test";  
    public static void BadMethod()  
    {  
        // Inefficient string comparison  
        bool equal = string1.ToLower() == string2.ToLower();  
        Console.WriteLine($"In bad method strings are {equal}");  
    }  
  
    public static void GoodMethod()  
    {  
        // efficient string comparison  
        bool equal = string.Equals(string1, string2, System.StringComparison.OrdinalIgnoreCase);  
        Console.WriteLine($"In good method strings are {equal}");  
    }  
}

从 main 方法执行,如下所示

#region Day 21: String Comparisons  
static string ExecuteDay21()  
{  
    StringComparisons.BadMethod();  
    StringComparisons.GoodMethod();  
  
    return "Executed Day 21 successfully..!!";  
} 

#endregion

控制台输出

In bad method strings are True  
In good method strings are True

源代码获取:公众号回复消息【code:68194

相关代码下载地址
重要提示!:取消关注公众号后将无法再启用回复功能,不支持解封!
第一步:微信扫码关键公众号“架构师老卢”
第二步:在公众号聊天框发送code:68194,如:code:68194 获取下载地址
第三步:恭喜你,快去下载你想要的资源吧
阅读排行