如何检查Func <...>类型的变量是否是特定的类方法

Seb*_*idz 4 c# casting func

我想在运行时检查Func <...>类型的变量是否是特定的类方法.例如

class Foo
{
    public static int MyMethod(int a, int b)
    {
        //...
    }
}

Func<int, int, int> myFunc;
myFunc = Foo.MyMethod;

if(myFunc is Foo.MyMethod)
{
    //do something
}
Run Code Online (Sandbox Code Playgroud)

And*_*ker 5

您应该能够直接使用==以下两者进行比较:

if (myFunc == Foo.MyMethod) { ... }
Run Code Online (Sandbox Code Playgroud)

  • 但是要小心.它在这里工作正常,但是`Delegate`实例可能有多个调用,即使你想要的方法是调用列表中的一个,在这种情况下,相等比较将返回`false`.此外,在我看来,如果你有代码需要检查委托调用哪个单一方法,那么那里的设计可能会出现更大的问题. (2认同)