C# Dictionary<string,string> TryGetValue不要区分大小写,不区分大小写的字典


在使用 Dictionary<string, string> 时,默认情况下键的比较是区分大小写的。如果你希望键的比较不区分大小写,可以在创建字典时指定一个自定义的比较器。例如,使用 StringComparer.OrdinalIgnoreCase 来忽略大小写。下面是一个示例:

C# 全选
using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        // 创建不区分大小写的字典
        var dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);

        // 添加键值对
        dictionary.Add("Key1", "Value1");
        dictionary.Add("Key2", "Value2");

        // 尝试获取值
        if (dictionary.TryGetValue("KEY1", out string value))
        {
            Console.WriteLine($"Found: {value}"); // 输出: Found: Value1
        }
        else
        {
            Console.WriteLine("Key not found");
        }

        if (dictionary.TryGetValue("key2", out value))
        {
            Console.WriteLine($"Found: {value}"); // 输出: Found: Value2
        }
        else
        {
            Console.WriteLine("Key not found");
        }
    }
}

在这个示例中,我们创建了一个不区分大小写的字典。无论是用 "Key1" 还是 "KEY1" 或者 "key1" 来查找键,都会成功并返回正确的值。

使用自定义比较器

如果你有更复杂的需求,还可以实现自己的比较器,只需要实现 IEqualityComparer<string> 接口。以下是一个简单的示例:

C# 全选
using System;
using System.Collections.Generic;

public class CaseInsensitiveComparer : IEqualityComparer<string>
{
    public bool Equals(string x, string y)
    {
        return string.Equals(x, y, StringComparison.OrdinalIgnoreCase);
    }

    public int GetHashCode(string obj)
    {
        return obj.ToLowerInvariant().GetHashCode();
    }
}

public class Program
{
    public static void Main()
    {
        var dictionary = new Dictionary<string, string>(new CaseInsensitiveComparer());

        dictionary.Add("Key1", "Value1");
        dictionary.Add("Key2", "Value2");

        if (dictionary.TryGetValue("KEY1", out string value))
        {
            Console.WriteLine($"Found: {value}");
        }
        else
        {
            Console.WriteLine("Key not found");
        }

        if (dictionary.TryGetValue("key2", out value))
        {
            Console.WriteLine($"Found: {value}");
        }
        else
        {
            Console.WriteLine("Key not found");
        }
    }
}

这个示例创建了一个自定义的比较器 CaseInsensitiveComparer,并使用它来初始化字典。无论键的大小写如何,查找操作都不会区分大小写。

 

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:如何在 Vue 2 中使用 Webpack 构建时为 favicon.ico 设置自定义根路径前缀
下一篇:确保 .NET Core BackgroundService 初始化完成后再处理接口请求
评论列表

发表评论

评论内容
昵称:
关联文章

C# Dictionary<string,string> TryGetValue区分大小写区分大小字典
也谈string.Join和StringBuilder性能比较
SQLite数据库删除数据后数据库文件大小
C#进化——C#发展史、C#1.0-10.0语法系统性梳理、C#与JAVA对比
公共字典扩展
sql server系统表详细说明 之 sys.column_store_dictionaries
模仿了一个摸鱼应用解决原作者问题
.net core设置返回json属性名(驼峰或保留大小写)配置方式
公共数据字典选择组件SelectCommonDict
.NET中大型项目开发必备(4)--数据库分离
winform应用退出彻底解决办法
智能转换文件大小单位B,KB,MB,GB
基础字典管理功能开发-API接口设计
TinyMCE自定义字体大小列表
03、4G 收款播报机
02、2G流量版收款播报机
C#性能优化总结
支付系统中避免支付状态并发BUG
C# 十六进制字符串转byte[],Byte[] 转String
RazorEngine能使用@Html.Raw引起连锁反应以及解决办法

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码