C# 具有不同返回值和参数的方法的委托声明

C# 具有不同返回值和参数的方法的委托声明,c#,c#-4.0,C#,C# 4.0,基于msdn页面,当我们声明委托时,我们确实需要指定返回值以及通过委托调用的方法的参数 我的问题: 假设我有一个方法: public int MethodA(bool bValue)以及void MethodB(int iValue) 我是否需要在这里为每个方法声明两个不同的委托,或者我可以使用一个来完成 谢谢 我是否需要在这里为每个方法声明两个不同的委托,或者我可以使用一个来完成 由于这些方法具有完全不同的签名,因此需要不同的委托。但是,您可以使用内置的和委托,而不是声明自己的委托类型 例如,

基于msdn页面,当我们声明委托时,我们确实需要指定返回值以及通过委托调用的方法的参数

我的问题:

假设我有一个方法:

public int MethodA(bool bValue)
以及
void MethodB(int iValue)

我是否需要在这里为每个方法声明两个不同的委托,或者我可以使用一个来完成

谢谢

我是否需要在这里为每个方法声明两个不同的委托,或者我可以使用一个来完成

由于这些方法具有完全不同的签名,因此需要不同的委托。但是,您可以使用内置的和委托,而不是声明自己的委托类型

例如,您可以使用:

Func<bool,int> delegateA = this.MethodA;

Action<int> delegateB = this.MethodB;
// or:  Action<int> delegateB = new Action<int>(this.MethodB);
Func delegateA=this.MethodA;
Action delegateB=this.MethodB;
//或者:Action delegateB=新操作(this.MethodB);

首先声明委托的意义在于,您可以调用一个方法而不必看到它的声明。这就是为什么您计划通过委托间接调用的每个函数签名都需要不同的委托类型。

您可以使用匿名方法缩短代码,而不是定义单独的方法,然后使用委托变量指向它

   class Program{
   delegate void MethodsDelegate(string Message);
   static void Main(string[] args){
   MethodsDelegate method = delegate(string Message){
   Console.WriteLine(Message);
    };
   //---call the delegated method---
 method("Using anonymous method.");
 Console.ReadLine();
  }
}

正如您所说的“调用一个方法而不查看其声明”。这听起来很有趣,但我正在阅读的msdn页面说,我们必须声明参数的数量/类型,还必须返回方法的类型。那么它是如何工作的呢?我还不清楚整个代表的情况thing@amitkohan声明委托与声明方法不同。通过声明委托,您可以指定在不声明这些方法的情况下可以为该委托传递哪些方法,而只声明它们的签名(参数类型+返回类型)。嗨,里德,请给我举个例子好吗?我是新来的。谢谢谢谢你的回复。我有一些想法。我认为这是一篇关于这方面的好文章。请确认一下好吗@amitkohan,我真的建议你这样做:谢谢你花时间给我看这个片段,但我没有遵循我们这里的方法。它的返回值是多少?我猜它的参数是string,所以它的返回值可能是void?@amitkohan因为它的返回值是void,所以应该注意,匿名方法没有返回任何值。