演示委托数组示例的 C# 程序
在 C# 中,委托是引用方法的对象,或者是可以保存对方法的引用的引用类型变量。委托类似于 C/C++函数指针。它还提供了一种方法来告诉在触发事件时要调用哪个方法。顾名思义,委托数组意味着使用以下语法在数组中声明一个委托数组:
句法:
name[] object = new name[size];
其中 name 是委托数组,size 是委托数组大小。我们还可以通过其索引将方法传递给委托数组。
name[0] = method1;
name[1] = method2;
-----------------
-----------------
name[n] = methodn;
我们可以使用委托的名称来调用委托。
delegate_array();
现在我们将创建三个方法并创建一个委托数组来指向这些方法,然后我们使用一个委托数组调用方法。
方法:
1.这里声明委托 Myrect() 是委托。
delegate void Myrect(double len, double width);
2.创建三个法线方法,分别命名为 Area、Perimeter 和 Diagonal。
3.创建一个大小为 3 的代表数组。
Myrect[] del = new Myrect[3];
4.将这些方法传递给委托的每个数组索引。
del[0] = Area;
del[1] = Perimeter;
del[2] = Diagonal;
5.调用在 for 循环中迭代数组的委托。
for(int i = 0; i < 3; i++)
{
del[i](len, width);
}
示例:
C#
// C# program to illustrate how to create
// an array of delegates.
using System;
// Creating delegates
delegate void Myrect(double len, double width);
class GFG{
// Finding Area of rectangle
static void Area(double len, double width)
{
double res1 = len * width;
Console.WriteLine("Area:" + res1);
}
// Finding perimeter of rectangle
static void Perimeter(double len, double width)
{
double res2 = 2 * (len + width);
Console.WriteLine("Perimeter:" + res2);
}
// Finding diagonal of rectangle
static void Diagonal(double len, double width)
{
double res3 = Math.Sqrt(len * len + width * width);
Console.WriteLine("Diagonal:" + res3);
}
// Driver code
static void Main()
{
double len = 4, width = 5;
// Create an array of delegates
// with array size 3
Myrect[] del = new Myrect[3];
// Pass the methods to array index
del[0] = Area;
del[1] = Perimeter;
del[2] = Diagonal;
Console.WriteLine("Data:");
for(int i = 0; i < 3; i++)
{
del[i](len, width);
}
}
}
输出:
Data:
Area:20
Perimeter:18
Diagonal:6.40312423743285
解释:在上面的例子中,我们创建了一个名为“Myrect(double len, double width)”的委托,它有两个参数。现在我们创建一个名为“GFG”的类,它包含三个名为 Area、Perimeter 和 Diagonal 的方法,这些方法接受两个参数,名为 len(即矩形的长度)和 width(即矩形的宽度)。在 main 方法中,我们创建了两个变量,并用矩形的长度和宽度(即 4 和 5)来初始化它们。现在我们创建一个名为“del”的大小为 3 的委托数组,并将这些方法传递给委托的每个数组索引。即,del[0] = 面积; del[1] = 周长; del[2] = 对角线;。通过调用delegate(即del[i](len, width))在for循环中迭代数组来显示数据(这里for循环迭代了3次)。