C# 委托的常见用法
C#中委托是一种引用方法的类型,可以将方法视为对象进行传递。 C#委托可以让我们写出更灵活,更可读性和更维护性的代码。 接下来介绍一些C#委托类型的常见用法。
委托作为参数
将委托作为方法参数,可以按需传递需要调用的方法。此方式允许运行时决定调用哪个方法。示例代码如下:
delegate int NumberChanger(int n); // 定义委托类型
class Program
{
static int num = 10;
public static int AddNum(int p)
{
num += p;
return num;
}
public static int MultNum(int p)
{
num *= p;
return num;
}
static void Main(string[] args)
{
NumberChanger nc = new NumberChanger(AddNum); // 声明委托类型句柄
nc(5);
Console.WriteLine("num's value: {0}", num); // 输出: 15
nc = new NumberChanger(MultNum); // 将另一个方法关联到委托实例中
nc(2);
Console.WriteLine("num's value: {0}", num); // 输出: 30
Console.ReadKey();
}
}
委托的多播
使用C#委托,您可以使用+或+=运算符将委托链接在一起以形成多个调用列表。 这被称为多路广播委托。 示例代码:
delegate void MoveDelegate(); // 声明委托类型
class Ball
{
// 用作委托事件的成员方法
public void MoveUp()
{
Console.WriteLine("Moving the ball up...");
}
public void MoveDown()
{
Console.WriteLine("Moving the ball down...");
}
public void MoveLeft()
{
Console.WriteLine("Moving the ball left...");
}
public void MoveRight()
{
Console.WriteLine("Moving the ball right...");
}
public void StopMoving()
{
Console.WriteLine("Stopping the ball...");
}
}
class Program
{
static void Main(string[] args)
{
Ball ball = new Ball();
MoveDelegate moveDelegate = ball.MoveUp;
moveDelegate += ball.MoveDown;
moveDelegate += ball.MoveLeft;
moveDelegate += ball.MoveRight;
moveDelegate += ball.StopMoving;
moveDelegate(); // 调用多播委托
Console.ReadKey();
}
}
以上是C#委托的常见用法,C#委托的目的是使代码更弹性并且避免代码逻辑串在一起。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# 委托的常见用法 - Python技术站