在C#中,委托是一种特殊的类型,它是一种可以存储对其他方法的引用(或类似指针的实体),并且可以调用这些方法的对象。委托可以像一般函数一样调用,并且在函数调用时会自动通知它所负责的所有方法去执行。
在C#中,委托可以用来实现回调机制,将一个委托对象作为参数传递给另一个函数,这样,当另一个函数完成任务后,就可以调用这个委托来通知回调函数。
委托属于引用类型,它可以像其他的引用类型一样来使用。可以使用“delegate”关键字来定义一个新的委托类型,并使用“new”关键字来创建委托对象。
下面是两个示例:
示例1
delegate int Calculate(int x, int y);
class Program
{
static void Main(string[] args)
{
Calculate c1 = new Calculate(Addition);
int sum = c1(10, 20);
Console.WriteLine("Sum = " + sum);
Calculate c2 = new Calculate(Subtraction);
int diff = c2(20, 10);
Console.WriteLine("Difference = " + diff);
Console.ReadLine();
}
static int Addition(int x, int y)
{
return (x + y);
}
static int Subtraction(int x, int y)
{
return (x - y);
}
}
在上面的示例中,我们定义了一个委托类型“Calculate”,它可以存储对一个方法的引用,并且这个方法有两个int类型的参数,并返回一个int类型的值。
我们在Main方法中定义了两个委托变量c1和c2,分别存储对Addition和Subtraction方法的引用。然后我们通过调用这两个委托变量来执行相应的方法,最后输出结果。
示例2
class Program
{
static void Main(string[] args)
{
List<string> names = new List<string>()
{
"Tom", "Jerry", "Mike"
};
PerformOperation(names, ShowNameLength);
Console.ReadLine();
}
static void PerformOperation(List<string> items, Action<string> action)
{
foreach (string item in items)
{
action(item);
}
}
static void ShowNameLength(string name)
{
Console.WriteLine(name + " has " + name.Length + " characters.");
}
}
在这个示例中,我们定义了一个名为“ShowNameLength”的方法,它有一个string类型的参数,并在方法中输出该字符串的长度。
我们还定义了一个名为“PerformOperation”的方法,它有一个List
在Main方法中,我们创建了一个字符串List,并通过PerformOperation方法来执行我们定义的ShowNameLength方法,来输出每个字符串的长度。
这两个示例展示了如何使用委托来实现不同的代码逻辑,并且可以在运行时动态切换要调用的方法。通过使用委托,我们可以实现更加灵活和通用的代码结构。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中委托的进一步理解 - Python技术站