複製代碼 代碼如下:using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class 簡單的委託執行個體
{
public static double Area(double Val)
{
return Val * 2;
}
public static double Scare(double Val)
{
return Val * Val;
}
}
class Test
{
public delegate double delegateTest(double dd);
static void Main()
{
//執行個體化了個委託數組,(一旦定義了委託類,就可以執行個體化它的執行個體)
delegateTest[] Operations =
{
//說明了委託的一種方式,把方法組合到數組
new delegateTest(簡單的委託執行個體.Area),
new delegateTest(簡單的委託執行個體.Scare)
};
for (int i = 0; i < Operations.Length; i++)
{
Console.WriteLine("Using Operations[{0}]", i);
Test MyTest = new Test();
//把委託傳遞給ProcessDelagate()這個方法,Operations[0]可以理解成delegateTest Operations =new delegateTest(簡單的委託執行個體.Area);調用ProcessDelagate這個方法的時候Operations代理的方法是簡單的委託執行個體.Area
MyTest.ProcessDelagate(Operations[i], 12.0);
MyTest.ProcessDelagate(Operations[i], 2.0);
Console.WriteLine();
}
}
//把委託作為一個參數傳遞到ProcessDelagate()第一個參數中
void ProcessDelagate(delegateTest Action, double d)
{
double Result = Action(d);
Console.WriteLine("提供的值是{0},結果是{1}", d, Result);
}
}
}
複製代碼 代碼如下:using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
//如果要多次調用這個方法,那麼就要多次調用這個委託,委託包含多個方法,這個種委託就是多播委託!
class 多播委託
{
//用的是void沒有傳回值
public delegate void DelageteTest(double val);
static void Main()
{
//多播委託中添加2個方法
DelageteTest MyTest = new DelageteTest(Test.Area);
MyTest += new DelageteTest(Test.Scare);
//下面的代碼跟上面的3行代碼是等價的
//DelageteTest MyTest;
//DelageteTest Test1 = new DelageteTest(Test.Area);
//DelageteTest Test2 = new DelageteTest(Test.Scare);
//MyTest = Test1 + Test2;
多播委託 多 = new 多播委託();
多.OPreation(MyTest, 2.0);
多.OPreation(MyTest, 12.0);
}
void OPreation(DelageteTest Action, double d)
{
Action(d);
}
}
class Test
{
public static void Area(double Val)
{
Console.WriteLine(Val * 2);
}
public static void Scare(double Val)
{
Console.WriteLine(Val * Val);
}
}
}