C# 委托和事件的理解
2018-03-26 19:57
309 查看
委托
private delegate string GetAString();//委托的定义,使用delegate关键字
//两种指向方法的写法
GetAString a = new GetAString(x.ToString);//a指向了x中的tostring方法
GetAString a = x.ToString;
//两种调用方法
string s = a();//通过委托实例去调用 x中的tostring方法
string s = a.Invoke();//通过invoke方法调用a所引用的方法
Action委托
无返回值 Action<参数1,参数2.....>名字=方法;
Fun委托
有返回值 FUN<参数1,参数2,...,返回值>名字=方法;
delegate关键字
还可以用来声明匿名方法
Func<int, int, int> plus = delegate(int arg1, int arg2)
{
return arg1 + arg2;
};
匿名方法可以用lambda表达式代替
Func<int, int, int> plus = (arg1, arg2) =>// lambda表达式的参数是不需要声明类型的
{
return arg1 + arg2;
};
事件event
namespace 事件 {//Event
class Program
{
public delegate void MyDelegate();
//public MyDelegate mydelgate;//声明了一个委托类型的变量,作为类的成员
public event MyDelegate mydelgate;//声明了一个委托类型的变量,作为类的成员
static void Main(string[] args)
{
Program p = new Program();
p.mydelgate = Test1;
p.mydelgate();
Console.ReadKey();
}
static void Test1()
{
Console.WriteLine("test1");
}
}
}
事件也是一个委托,是一个有特殊限制的委托,只能在类的内部声明,事件不能再类的外部触发,只能在类的内部触发。
另外委托和事件都可以通过+=和-=来操作其中的方法的队列。
private delegate string GetAString();//委托的定义,使用delegate关键字
//两种指向方法的写法
GetAString a = new GetAString(x.ToString);//a指向了x中的tostring方法
GetAString a = x.ToString;
//两种调用方法
string s = a();//通过委托实例去调用 x中的tostring方法
string s = a.Invoke();//通过invoke方法调用a所引用的方法
Action委托
无返回值 Action<参数1,参数2.....>名字=方法;
Fun委托
有返回值 FUN<参数1,参数2,...,返回值>名字=方法;
delegate关键字
还可以用来声明匿名方法
Func<int, int, int> plus = delegate(int arg1, int arg2)
{
return arg1 + arg2;
};
匿名方法可以用lambda表达式代替
Func<int, int, int> plus = (arg1, arg2) =>// lambda表达式的参数是不需要声明类型的
{
return arg1 + arg2;
};
事件event
namespace 事件 {//Event
class Program
{
public delegate void MyDelegate();
//public MyDelegate mydelgate;//声明了一个委托类型的变量,作为类的成员
public event MyDelegate mydelgate;//声明了一个委托类型的变量,作为类的成员
static void Main(string[] args)
{
Program p = new Program();
p.mydelgate = Test1;
p.mydelgate();
Console.ReadKey();
}
static void Test1()
{
Console.WriteLine("test1");
}
}
}
事件也是一个委托,是一个有特殊限制的委托,只能在类的内部声明,事件不能再类的外部触发,只能在类的内部触发。
另外委托和事件都可以通过+=和-=来操作其中的方法的队列。
相关文章推荐
- C#学习之初步理解委托、事件、匿名方法和Lambda
- 理解C#中事件和委托的例子
- 帮助理解c#中委托+事件的一个例子
- 深刻理解:C#中的委托、事件
- 对C#下函数,委托,事件的一点理解!
- c# 委托和事件理解 三种方式
- 快速理解C#中的委托与事件
- 对C#委托及事件委托的理解
- C#事件与委托(笨蛋理解法)
- C#委托,事件理解入门 (译稿)
- 深入理解C#---2.事件?委托?傻傻分不清楚
- 对C#委托及事件委托的理解(转)
- C# 委托与事件的一点理解(1)
- 关于C#中的委托和事件的个人理解
- 对C#委托及事件委托的理解
- 早些学C#时对委托和事件的理解笔记
- 对C#下函数,委托,事件的一点理解!
- 深刻理解:C#中的委托、事件
- 理解C#中的委托和事件
- (zz)从callback的角度来理解.NET/C# 中的 委托 (delegate)与 事件 (event)