理解一下委托


using System;
namespace guoxinghua
{
public delegate int MathOptDelegate(int value1,int value2);
class Class
{
public int Add(int argument1,int argument2)
{
return argument1+argument2;
}
}
class Program
{
Static void Main(String[] args)
{
MathOptDelegate oppDel;
MathOpt obj=new MathOpt();
oppDel=obj.Add;//给此委托类型赋值
Console.WriteLine(oppDel(1,2));//3
}
}
}


using System;
using System.Collections.Generic;
using System.Text;
namespace guoxinghua
{
public delegate int MathOptDelegate(int value1,int value2);
class Class
{
public static void Main(String[] args)
{
MathOpt myopt=new MathOpt();
myopt.Add(1,2);
MathOpt oppDel;
oppDel=myopt.Add;
oppDel(1,2);
Console.WriteLine(PrintResult(MathOpt.Add,1,2));
}
public static int PrintResult(MathOptDelegate action,int a,int b)
{
int result=action(1,2);
return result;}
}
public class MathOpt
{
public static int Add(int arg1,int arg2){
return arg1+arg2;
}
public static int Sub(int arg1,int arg2){
return arg1-arg2;
}
}
}


using System;
namespace guoxinghua
{
delegate double DoubleOp(double x);
class MathOperations
{
public static double multi(double value){
return value*2;
}
public static double Square(double value)
{
return value*value;
}
}
class MainEntryPoint
{
public static void Main(String[] args)
{
DoubleOp[] operations={
new DoubleOp(MathOperations.MultiByTwo),new DoubleOp(MathOperations.Square)
}
for(int i=0;i<operation.length;i++)
{
Console.WriteLine("Using operations[{0}]",i);
ProcessAndDisplayNumber(operation[i],2.0);
Console.WriteLine();
}
}
public static void ProcessAndDisplayNumber(DoubleOp action,double value)
{
double result=action(value);
Console.WriteLine("Value is {0},result of operation is {1}",value,result);
}
}
}


using System;
namespace guoxinghua
{
public delegate void Del(String testString)
class MulticastDelegate
{
public static void Main(String[] args)
{
MessageTest OK=new MessageTest();
Del d1=new Del(OK.Message1);
Del d2=new Del(OK.Message2);
Del d3=new Del(OK.Message3);
Del dAll=d1+d2+d3;
dAll("代理之广播");
dAll=aAll-d1;
dAll("代理之多路委托");
}
}
class MessageTest
{
public void Message1(String testString){
Console.WriteLine("使用message1"+testString);
}
public void Message2(String testString)
{
Console.WriteLine("使用message2"+testString);
}
public void Message3(String testString)
{
Console.WriteLine("使用message3"+testString);
}
}
}
C#2.0的匿名方法


using System;
namespace guoxinghua
{
class Class
{
public delegate void MyDelegate(int x);
public static void Main(String[] args)
{
MyDelegate md;
md=SomeMethod;
md(100);
Console.WriteLine("guoxinghua");
}
static void SomeMethod(int x)
{
Console.WriteLine(x);
}
}
}


using System;
namespace guoxinghua
{
public delegate void MyDelegate(int x);
class Class
{
public static void Main(String[] args)
{
MyDelegate md=delegate(int x){
Console.WriteLine(x);
}
}
}
}