在其他参数函数中调用函数和她的参数

时间:2018-05-06 18:31:28

标签: c#

我试图这样做。

void Test(int num)
{

}

Function(Test(1)); //Error

如何编写我的函数来允许这个? 我试过这个,但它没有用。

void Function(Action<int> action);

只有在我不准确这样的整数时才有效。

Function(Test); //Compile but I can't precise the integer

谢谢

2 个答案:

答案 0 :(得分:1)

  

如何写我的函数来允许这个?

功能的定义更改为

void Function(Action action);

现在,您可以将其称为

Function(()=>Test(1))

如果您无法更改功能的定义,可以将其命名为

Function((_)=>Test(1))

答案 1 :(得分:0)

这个Function(Test(1));不是有效的C#语法,使用()基本上是调用函数,而不是传递它。 你只能在函数期望一个类型时执行该操作,并且该函数将返回它。

  

Func和Action,是一个预定义的删除,您可以在不定义自己的情况下使用。

像这样:

public static void Test(int i)
{
    Console.WriteLine("Test()");
}

public static int GetNumber()
{
    return 5;
}
Test(GetNumber());

如果你想将一个函数传递给另一个函数,有很多方法可以做,取决于函数是否需要参数,是否有返回类型。

  

一个参数且没有返回类型

public static void PrintNumber(int num)
{
    Console.WriteLine(num);
}
public static void Function(Action<int> predicate, int param)
{
    predicate(param);
}
Function(PrintNumber,5);
  

一个参数和一个返回类型

public static int Test(int num)
{
   return num  ;
}
public static void Function(Func<int,int> predicate, int param)
{
    predicate(param);
}
Function(Test, 5);

这个Func<int,int>的第一个int是参数类型,你最多可以有15个我认为加一个是最后一个返回类型。

从这里你可以谷歌休息,希望这有帮助:)