C# 使用不同类的不同方法进行委托

C# 使用不同类的不同方法进行委托,c#,C#,在上面的代码中,调用的函数和调用的函数在同一个类中。。。。我们可以在不同的课堂上同时使用这两种语言吗 如果可能的话,请举个例子……你当然可以 只需将您的方法放在一个单独的类中,并创建一个实例来访问它们: using System; delegate int NumberChanger(int n); namespace DelegateAppl { class TestDelegate { static int num = 10; public static

在上面的代码中,调用的函数和调用的函数在同一个类中。。。。我们可以在不同的课堂上同时使用这两种语言吗

如果可能的话,请举个例子……

你当然可以

只需将您的方法放在一个单独的类中,并创建一个实例来访问它们:

using System;

 delegate int NumberChanger(int n);
 namespace DelegateAppl
 {
   class TestDelegate
   {
     static int num = 10;
    public static int AddNum(int p)
     {
      num += p;
      return num;
     }

     public static int MultNum(int q)
    {
      num *= q;
     return num;
    }
  public static int getNum()
  {
     return num;
  }

  static void Main(string[] args)
  {
     //create delegate instances
     NumberChanger nc1 = new NumberChanger(AddNum);
     NumberChanger nc2 = new NumberChanger(MultNum);

     //calling the methods using the delegate objects
     nc1(25);
     Console.WriteLine("Value of Num: {0}", getNum());
     nc2(5);
     Console.WriteLine("Value of Num: {0}", getNum());
     Console.ReadKey();
  }
}
现在调用以下方法:

class Arithmetic
{
    int num = 10;
    public int AddNum(int p)
    {
        num += p;
        return num;
    }

    public int MultNum(int q)
    {
        num *= q;
        return num;
    }
}

注意:您不需要
getNum()
方法,因为您已经从每个方法返回了值,并且您的委托也返回了值。另外,我已经从所有地方删除了
static
,因为您似乎需要它。

您是否考虑了一个非常具体的场景?如果你这样做了,就试试看,否则你会知道的。没有考虑到具体的情况。。不清楚你在问什么对我来说很清楚他想达到什么目的。尽管如此,我还是喜欢@VikasGupta,你应该试试看。我认为不需要删除静态关键字。。。它可以与(classname.functionname)一起工作,如arithermatic.addnumAs。但是您将无法使用
static
重用该类。
class TestDelegate
{
    public delegate int NumberChanger(int n);

    static void Main(string[] args)
    {
        //create instance of class
        Arithmetic art = new Arithmetic();

        //create delegate instances
        NumberChanger nc1 = new NumberChanger(art.AddNum);  //call with reference
        NumberChanger nc2 = new NumberChanger(art.MultNum); //call with reference

        //calling the methods using the delegate objects

        //add
        Console.WriteLine("Value of Num: {0}", nc1(25)); //use it directly because your delegate returns a value

        //product
        Console.WriteLine("Value of Num: {0}", nc2(5)); //use it directly because your delegate returns a value

        Console.ReadKey();
    }
}