1.C#的委托(delegate)
1.说白了就是C++的函数指针,但是C#是把其类化调用,并且C#支持实例化类的一个委托成员函数调用,如下代码:
namespace CSharp2010
{
class Program
{
delegate int delegateAdd(int nNewNum);
static void Main(string[] args)
{
CDelegate kk = new CDelegate();
delegateAdd pDelegate = new delegateAdd(kk.add);
pDelegate(55);
}
}
class CDelegate
{
int nNum = 10;
public int add(int nNewNum)
{
nNum += nNewNum;
return nNum;
}
}
}
2.委托还有调用列表的操作,如下代码,依次调用了m1和m2函数
:
namespace CSharp2010
{
class Program
{
delegate int delegateAdd(int nNewNum);
delegate void delegateStack(int nNewNum);
static void Main(string[] args)
{
//CDelegate kk = new CDelegate();
//delegateAdd pDelegate = new delegateAdd(kk.add);
//pDelegate(55);
delegateStack p1 = new delegateStack( CDelegate.m1);
delegateStack p2 = new delegateStack(CDelegate.m2);
delegateStack p3 = p1 + p2;
p3(10);
}
}
class CDelegate
{
int nNum = 10;
public int add(int nNewNum)
{
nNum += nNewNum;
return nNum;
}
static public void m1(int nData)
{
Console.WriteLine("m1:" + nData);
}
static public void m2(int nData)
{
Console.WriteLine("m2:" + nData);
}
}
}