有没有一种可能的方法让我在不调用 op_Equality 函数的情况下比较字符串是 mscorlib?例如:
string s1 = "hi";
if(s1 == "bye")
{
Console.Writeline("foo");
}
编译为:
IL_0003: call bool [mscorlib]System.String::op_Equality(string, string)
从 GAC 查看 mscorlib 中的 op_Equality 它调用了另一个方法 Equals(string, string) 代码:
public static bool Equals(string a, string b)
{
return a == b || (a != null && b != null && string.EqualsHelper(a, b));
}
它使用操作码 bne.une.s 来比较这些字符串。
现在回到我的问题,如何在不调用 mscorlib 中的任何函数的情况下比较 2 个字符串,就像 Equals 方法所做的那样。