首页 > 后端开发 > C++ > 为什么在 C# 中使用 `x.Username.Equals()` 进行不区分大小写的字符串比较失败?

为什么在 C# 中使用 `x.Username.Equals()` 进行不区分大小写的字符串比较失败?

Patricia Arquette
发布: 2025-01-19 12:51:10
原创
117 人浏览过

Why Does Case-Insensitive String Comparison Fail in C# Using `x.Username.Equals()`?

C# 中不区分大小写的字符串比较问题排查

C# 开发中的一个常见陷阱涉及执行不区分大小写的字符串比较。 虽然 x.Username.Equals() 看起来可能合适,但如果未明确处理区分大小写,则可能会导致意外结果。

最初的方法x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase))虽然看似正确,但在更大的背景下可能并不总是按预期发挥作用。

在 LINQ 表达式中使用 Equals 时会出现此问题,例如 FindIndex。问题在于该方法对空值的隐式处理。

正确的做法

解决方案是直接使用String.Equals,确保正确的空处理和不区分大小写的比较:

<code class="language-csharp">drUser["Enrolled"] = (enrolledUsers.FindIndex(x => String.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));</code>
登录后复制

此修订后的代码显式调用静态 String.Equals 方法,该方法可以正确处理来自 x.Username(string)drUser["Username"] 的潜在空值。

推荐的最佳实践

用于稳健且高效的字符串操作:

  • 比较: 使用 String.Equals 重载进行相等性检查,指定 StringComparison.OrdinalIgnoreCase 进行不区分大小写的比较。
  • 排序: 使用 String.CompareString.CompareTo 进行字符串排序操作。 这些方法为排序任务提供了更多控制和效率。

示例实现

以下代码片段说明了推荐的最佳实践:

<code class="language-csharp">drUser["Enrolled"] = enrolledUsers.FindIndex(x => String.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase));</code>
登录后复制

通过遵循这些准则,开发人员可以避免常见陷阱,并确保在 C# 应用程序中进行准确、高效的不区分大小写的字符串比较。

以上是为什么在 C# 中使用 `x.Username.Equals()` 进行不区分大小写的字符串比较失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板