重载运算符是静态方法,因此具有MethodInfo
可以操作或调用的相应对象:
var eqStr = typeof(string).GetMethod("op_Equality");
Console.WriteLine(eqStr.Name);//op_Equality - the .NET name rather than the C# name
Console.WriteLine(eqStr.IsSpecialName);//True - languages may give it a different name
Console.WriteLine(eqStr.Invoke(null, new object[]{"abc", "abc"}));//True
Console.WriteLine(eqStr.Invoke(null, new object[]{"abc", "def"}));//False
这实际上只是让我们了解该方法的语言中立特性,这可能很有用,但它并没有让我们了解给定语言使用的名称(==
在 C#、=
VB.NET 等中),可以说它的优先级或任何“操作性”。
而且它仅适用于重载,而不适用于内置插件。