你能在C#中为一个变量赋一个函数吗?

我看到一个函数可以在javascript中定义

var square = function(number) {return number * number}; 

并且可以被称为

 square(2); var factorial = function fac(n) {return n<3 ? n : n*fac(n-1)}; print(factorial(3)); 

c#代码

 MyDelegate writeMessage = delegate () { Console.WriteLine("I'm called"); }; 

所以我需要知道我可以在c#中以相同的方式定义一个函数。 如果是,那么只需在c#中给出一小段上面的函数定义。 谢谢。

您可以创建委托类型声明:

 delegate int del(int number); 

然后分配并使用它:

  del square = delegate(int x) { return x * x; }; int result= square (5); 

或者如上所述,您可以使用代理的“快捷方式”(由委托制作)并使用:

 Func<[inputType], [outputType]> [methodName]= [inputValue]=>[returnValue] 

例如:

Func square = x=>x*x;
int result=square(5);

您还有两个其他快捷方式:
没有参数的Func p=()=>8;Func p=()=>8;
带有两个参数的Func p=(a,b)=>a+b;Func p=(a,b)=>a+b;

 Func square = x => x * x; Func factorial = n => { return n < 3 ? n : n * fac(n-1); } 

任何这些更详细的forms也是可能的:(我使用square作为例子):

  • Func square = x => { return x * x; };

  • Func square = (double x) => { return x * x; };

  • Func square = delegate(double x) { return x * x; };
    这个使用较旧的“匿名委托”语法而不是所谓的“lambda表达式”( => )。

PS: int可能不是像factorial这样的方法的适当返回类型。 以上示例仅用于演示语法 ,因此请根据需要进行修改。