You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中string.Compare()与CompareTo()的区别及比较依据解析

string.Compare 和 CompareTo 的比较逻辑

string.Compare静态方法和string.CompareTo实例方法默认行为完全一致,核心都是按Unicode字符码点逐位对比,而且默认区分大小写。

对比规则

  • 从字符串第一个字符开始,挨个对比对应位置的字符码点
  • 碰到第一个不一样的字符时:
    • 当前字符串的字符码点更小 → 返回 -1
    • 当前字符串的字符码点更大 → 返回 1
  • 要是所有对应字符都相同,就比长度:
    • 长度一致 → 返回 0
    • 当前字符串更短 → 返回 -1,更长则返回 1

你的示例拆解

Unicode编码里,所有大写字母的码点普遍小于对应的小写字母:

  • 大写W的码点是 87
  • 小写w的码点是 119

场景1:s1="world",s2="World"

首字符对比:s1的w(119)比s2的W(87)大,正常情况下两个方法都会返回1。如果你实际得到的是-1,大概率是字符串赋值或观察时搞反了顺序,但核心对比逻辑没变。

场景2:s1改为"World",s2改为"world"

首字符W(87)比w(119)小,所以两个方法应该返回-1。若你得到的是1,同样要检查字符串的赋值是否正确,逻辑本身还是基于码点对比。

补充说明

如果需要忽略大小写或者按特定文化规则比较,可以使用string.Compare的重载方法(比如传入StringComparison.OrdinalIgnoreCase参数),但你示例里调用的是默认重载,所以遵循区分大小写的Unicode码点对比逻辑。

内容的提问来源于stack exchange,提问作者Arun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:33:11