以两种不同的方式比较两个字符串

Compare two strings in two different ways

我用 C# 写了这个小程序

private void Form1_Load(object sender, EventArgs e)
{
    MessageBox.Show(("7797302D875A8922EBFC7DECBD352FE88F35642F" == "‎7797302D875A8922EBFC7DECBD352FE88F35642F").ToString());

    var a = "7797302D875A8922EBFC7DECBD352FE88F35642F";
    var b = "7797302D875A8922EBFC7DECBD352FE88F35642F";
    MessageBox.Show((a == b).ToString());

}

第一个消息框显示 "False",而消息框显示 "True"。

我的问题是:为什么我不能用 == 运算符比较两个字符串?

差异不是由比较引起的,而是您的测试字符串引起的。

第一种情况的第二个字符串以不可见的0x200E开头,unicode 从左到右的标记.

您的第二个字符串有不可见的 Left-to-right 标记 字符为 (U+200E)

看起来只是另一个 copy-paste 问题。