Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取委托方法的名称_C#_Delegates - Fatal编程技术网

C# 获取委托方法的名称

C# 获取委托方法的名称,c#,delegates,C#,Delegates,出于好奇,我一直在研究委托方法,并对获取当前正在使用的委托方法的名称感兴趣(只是为了好玩,真的) 我的代码如下(带有当前/期望输出): 私有委托intmathDelegate(intx,inty); 公共静态void Main() { mathDelegate add=(x,y)=>x+y; mathDelegate减法=(x,y)=>x-y; mathDelegate乘法=(x,y)=>x*y; var functions=newmathDelegate[]{加、减、乘}; foreach(函

出于好奇,我一直在研究委托方法,并对获取当前正在使用的委托方法的名称感兴趣(只是为了好玩,真的)

我的代码如下(带有当前/期望输出):

私有委托intmathDelegate(intx,inty);
公共静态void Main()
{
mathDelegate add=(x,y)=>x+y;
mathDelegate减法=(x,y)=>x-y;
mathDelegate乘法=(x,y)=>x*y;
var functions=newmathDelegate[]{加、减、乘};
foreach(函数中的var函数){
var x=6;
变量y=3;
WriteLine(String.Format(“{0}({1},{2})={3}”,function.Method.Name,x,y,function(x,y));
}
}
///输出为:
//b__0(6,3)=9
//b__1(6,3)=3
//b__2(6,3)=18
///期望输出
//加(6,3)=9
//减去(6,3)=3
//乘(6,3)=18

有人知道我有什么方法可以做到这一点吗?谢谢。

您的方法是匿名委托,因此编译器为每个方法指定的名称与变量名之间没有任何有意义的联系。如果您想让它们有更好的名称,那么就让它们成为实际的方法:

public int Add(int x, int y)
{ 
   return x + y ;
}
等等。然后按名称引用它们:

var functions = new mathDelegate[]{this.Add, this.Subtract, this.Multiply};

请注意,
this.
是可选的,但说明它们是类成员而不是局部变量。

您的方法是匿名委托,因此编译器为每个方法提供的名称与变量名之间没有任何有意义的连接。如果您想让它们有更好的名称,那么就让它们成为实际的方法:

public int Add(int x, int y)
{ 
   return x + y ;
}
等等。然后按名称引用它们:

var functions = new mathDelegate[]{this.Add, this.Subtract, this.Multiply};
请注意,
this.
是可选的,但说明它们是类成员而不是局部变量