什么是委托?委托和事件是什么关系?
什么事反射?
C#中的多个类基础?如何实现多重继承
什么事密封类?
using 关键字的几种用途?
#waring和#error分别的用途是什么?
Asp.Net web应用程序和Asp.NET网站的区别是什么?
什么事委托?
咱家:在c/c++中使用过函数指针和类成员函数指针,所谓的函数指针和类成员函数指针,都是声明一种与函数指针或者类成员函数参数相同将其的名称挖掉,在用这个声明去接受这个这个函数,或者类成员函数,这个这个声明就存储了他的地址,就可以通过这个声明从而来操作这个函数;
为了方便识别咱家用c举了一个例子:
int chu(int a,int b)
{
return a/b;
}
void main()
{
int (*p)(int a,int b)=cheng; //存储函数指针的地址
printf("%d",p(1,3));
system("pause");
}
或许有些同志想说明明c#你玩什么C?
一、我只想说在我的理解中c#的委托像操作变量一样来操作函数,所以与c的相识,下面我们进入“正题”定义一个委托
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 委托
{
//声明委托类型
public delegate void SayDelegate(string name); //定义一个函数类型的委托
class ClassPeople
{
public void SayA(string name)
{
Console.WriteLine("你好,{0}",name);
}
public void SayB(string name)
{
Console.WriteLine("Hello,{0}",name);
}
//注意此方法,他接受一个SayDelegate类型的方法做为参数
public void DoWork(string name,SayDelegate MakeSay)
{
MakeSay(name); //通过这个变量来操作函数
}
}
class Program
{
static void Main(string[] args)
{
ClassPeople p = new ClassPeople();
p.DoWork("小李子", p.A);
p.DoWork("XiaoLiZhi", p.B);
Console.ReadLine();
}
}
}
多播委托可以将多个相同的函数类型的赋值给一个委托,或者将多个方法帮定到一个委托,这就是多播委托
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 委托
{
//声明委托类型
public delegate void SayDelegate(string name);
class ClassPeople
{
public void A(string name)
{
Console.WriteLine("你好,{0}",name);
}
public void B(string name)
{
Console.WriteLine("Hello,{0}",name);
}
//注意此方法,他接受一个SayDelegate类型的方法做为参数
public void DoWork(string name,SayDelegate MakeSay)
{
MakeSay(name);
}
}
class Program
{
static void Main(string[] args)
{
ClassPeople p = new ClassPeople();
p.DoWork("小李子", p.A);
p.DoWork("XiaoLiZhi", p.B);
//多播委托可以将多个相同类型的赋值给一个委托,或者将多个方法帮定到一个委托,这就是多播委托
SayDelegate delegate1 = p.A;
delegate1 += p.B; //将多个相同类型赋值到一个委托中
p.DoWork("XiaoLiZhi",delegate1);
Console.ReadLine();
}
}
}