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();
}
}