op_inequality方法在哪里?如何使用.NET Reflector通过层次结构选择它

时间:2015-07-16 00:56:00

标签: c# .net .net-reflector

enter image description here我有一个旧的dll应用程序。我必须使用Reflexil v1.7在.NET REFLECTOR中创建新指令。 问题是我在哪里可以找到op_Inequality方法? 我得写 操作码=通话 操作数= System.Boolean System.String :: op_Inequality(system.string system.string)

1 个答案:

答案 0 :(得分:0)

我不确定它在reflexil中应该如何工作,因为我没有安装.Net Reflector。

你正在看的是String类的op_inequality运算符,它看起来像这样:

public static bool operator !=(string a, string b)
{
return !string.Equals(a, b);
}

在c#中,等价物是

bool result = (a != b) 

从反编译而不是op_Inequality可以看出,我希望您可以将虚拟调用放入Equals然后取消分支。

IL_0024:  ldloc.0     // s
IL_0025:  ldloc.1     // v
IL_0026:  callvirt    System.String.Equals
IL_002D:  brtrue.s    IL_0038