.net 在C#中可以将方法声明为参数吗?

8ehkhllq  于 2023-05-02  发布在  .NET
关注(0)|答案(5)|浏览(144)

例如,我想调用的主要方法是这样的:

public static void MasterMethod(string Input){
    /*Do some big operation*/
}

通常,我会这样做:

public static void StringSelection(int a)
{
    if(a == 1)
    {
       return "if";
    }
    else
    {
       return "else";
    }
}

MasterMethod(StringSelection(2));

但我想做这样的事情:

MasterMethod( a = 2
     {
        if(a == 1)
        {
           return "if";
        }
        else
        {
           return "else";
        }
     });

其中2以某种方式作为输入传递到操作中。
这可能吗?这个有名字吗
请注意,MasterMethod是一个API调用。我不能改变参数。我不小心打错了。

ejk8hzay

ejk8hzay1#

您可以通过delegates in C#来执行此操作:

public static string MasterMethod(int param, Func<int,string> function)
{
    return function(param);
}

// Call via:
string result = MasterMethod(2, a => 
{
    if(a == 1)
    {
       return "if";
    }
    else
    {
       return "else";
    }
 });
1qczuiv0

1qczuiv02#

你可以用anon delegates来做这件事:

delegate string CreateString();

    public static void MasterMethod(CreateString fn)
    {
        string something = fn();
        /*Do some big operation*/
    }

    public static void StringSelection(int a)
    {
        if(a == 1)
        {
           return "if";
        }
        else
        {
           return "else";
        }
    }

    MasterMethod(delegate() { return StringSelection(2); });

相关问题