C#高级学习第二章委托,Lambda表达式和事件
来源:互联网 发布:软件开发标准等级 编辑:程序博客网 时间:2024/05/16 15:35
using System;
委托:
1.
private delegate String GetString(); 委托是一个类型,这个类型可以赋值一个方法的引用
int x=40;
GetString a=new GetString(x.ToString);
String s=a();
2.
GetString a=x.ToString;
String s=a.Invoke();
委托类型可以作为方法的参数
Action:
Action是系统内置的委托,是一个没有返回值,没有参数的类型
Action<int> 代表没有返回值,有一个int参数的类型
Action<int,int> 代表没有返回值,有两个int参数的类型
Action后面的泛型,代表委托方法里头的参数与泛型保持一致
Func:
Func是系统内置的委托,是有一个返回值,没有参数的类型
Func<int> a 这代表有一个int返回值,没有参数的类型
Func<int,string>这代表有一个string返回值,一个int参数的类型
Func后面的泛型最后指的是返回值类型,前面的指的是参数类型,可以写0-16个参数类型
int类型的冒泡排序:
private bool swapped=true;
void Sort(int[] intArray)
do
{
swapped=false;
for(int i=0;i<intArray.Length-1;i++)
{
if(intArray[i]>intArray[i+1])
{
int temp=intArray[i];
intArray[i]=intArray[i+1];
intArray[i+1]=temp;
swapped=true;
}
}
{while(swapped);
其他类型的排序:
public void EmployeeSort<T>(T[] SortArray,Func<T,T,int> CompareMethod)
{
bool swapped = true;
do
{
swapped = false;
for (int i = 0; i < SortArray.Length - 1; i++)
{
if (CompareMethod(SortArray[i],SortArray[i+1])>0)
{
swapped = true;
T temp = SortArray[i];
SortArray[i] = SortArray[i + 1];
SortArray[i + 1] = temp;
}
}
} while (swapped);
}
多播委托:
Action a=Text1;
a+=Text2; 添加一个委托
a-=Text2; 减少一个委托
a.GetInvocationList() 得到所有的委托
a.DynamicInvoke(); 输出委托
匿名方法:
每一个委托都可以直接用匿名方法赋值,匿名方法本质上是一个方法,只是没有名字,任何使用委托变量的地方都可以使用匿名方法赋值
Func<int,int,int> a=delegate(int arg1,int arg2)
{
return arg1+arg2;
};
Lambda表达式:
Lambda表达式是可以替代匿名方法的,也是一种方法
Func<int,int,int> a=(arg1,arg2)=>
{
return arg1+arg2;
};
如果委托参数只有一个的话,可以省略小括号,如果返回值只有一句话,可以不用花括号和return
Func<int,int> a=arg1=>arg1+1;
事件:
public delegate void MyDelegate;
public event MyDelegate eventDelegate;
观察者设计模式:
在被观察者中设立一个委托,在很多观察者中注册委托方法
通过调用委托就不用修改被观察者的代码了,直接修改委托的+-;
事件只能在类的内部使用,不能再类的外部使用,防止在其他类触发委托
public event Action CatCome; 声明一个事件,发布一个消息
在一个类发布委托或事件,其他的类中注册,利用这个委托调用其他类的方法
阅读全文
1 0
- C#高级学习第二章委托,Lambda表达式和事件
- 《C#高级编程》【第八章】委托、lambda表达式和事件 -- 学习笔记
- C#高级编程之委托、lambda表达式和事件
- pp看书笔记---C#高级编程第九版 第八章 【委托、Lambda表达式和事件】
- c# 高级编程 委托、lambda表达式和事件 教学(1)
- c# 委托、事件、lambda表达式
- C#委托/Lambda表达式/事件
- 委托、Lambda表达式和事件
- 委托,Lambda表达式和事件
- 委托、Lambda表达式和事件
- 委托,lambda表达式和事件
- 委托、Lambda表达式和事件
- 深入解析C# 委托事件和Lambda表达式
- [连载]C#程序设计(15)--- 委托、事件和Lambda表达式
- 一个例子帮你搞懂C#语言高级特性系列(02) --- 委托、事件和Lambda表达式
- 学习笔记--委托,Lambda表达式和事件(1)
- 学习笔记--委托,Lambda表达式和事件(2)
- C# 委托 事件 匿名函数 Lambda表达式
- 聊聊Vue.js组件间通信的几种姿势
- 【java笔记】day04
- opencv学习——ORB(Oriented FAST and Rotated BRIEF)
- D
- Java基础总结
- C#高级学习第二章委托,Lambda表达式和事件
- 如何在句酷批改网禁止粘贴的文本框中粘贴
- 刷题
- SQL语句优化分析
- expect 读取文件循环执行
- The Bloody Forehead
- Hello World! 计算机小白入门java第一课遇到的问题和解决办法( java1)
- python从文件中读数据并进行排序
- C#总结---扒一扒变量与常量的那些事