c#软件开发学习笔记一、lambda表达式lambda表达式本质是一个函数作为另外一个函数参数进行使用也可以称为是匿名函数(箭头函数)表达式语法:(参数类型 a,参数类型 b,...){}单独写lambda表达式会报错要么写在高阶函数里面 要么找一个变量接收,lambda表达式如果找一个变量接收的话这个变量是类型使用这三种类型接收1 Func 接收有返回值的函数参数 0~16 个2 Predicate 接收有返回值为bool类型的函数参数1个3 Action 接收无返回值的函数参数 0~16 个1.Func//Funcint,int,int 参数类型 最后一个类型是返回值的类型//F4 函数名//(int a, int b) 参数类别 多个参数时候必须加()//{函数体}Funcint,int,intF4(inta,intb){returnab;};//lambda可以像普通函数去调用Console.WriteLine(F4(10,20));//简化写法Funcint,intF6aa;//把lambda表达式应用在高级函数中Console.WriteLine(Array.Find(ages,vv%2!0));//找奇数的第一个匹配到的元素2.Predicate//使用Predicate关键字接收返回值为bool类型的lambda表达式Predicateintf3aa%20;Console.WriteLine(f3(3));//false3.Action//使用Action关键字接收无返回值的lambda表达式//定义一个字符串参数 无返回值的lambda表达式// 如果一个参数可以把()不写// 如果函数体只有一句可以把{}省掉Actionstringf2(a)Console.WriteLine(a);f2(hell world);二、数组排序1.冒泡排序冒泡排序Bubble Sort 一个简单且常用的排序算法。因最大或最小的元素会经过交换慢慢出现在数列顶端好似元素冒出来一样得名“冒泡排序”。原理比较相邻元素从列表的第一个元素开始比较相邻的两个元素交换位置如果前一个元素比后一个元素大升序排序时就交换它们的位置重复遍历对每一对相邻元素做同样的工作从开始第一对到结尾的最后一对最大元素沉底每次完整遍历后最大的元素会冒泡到列表的末尾缩小范围忽略已经排序好的末尾部分重复上述过程完成排序当没有元素需要交换时排序完成publicstaticvoidBubbleSort(int[]ints){boolisSwap;for(inti0;iints.Length;i){isSwapfalse;for(intj0;jints.Length-1-i;j){if(ints[j]ints[j1]){(ints[j],ints[j1])(ints[j1],ints[j]);isSwaptrue;}}if(!isSwap)return;}}2.选择排序选择排序在要排序的一组数中选出最小或最大的一个数与第一个位置的数交换在剩下的数当中找最小的与第二个位置的数交换即顺序放在已排好序的数列的最后如此循环直到全部数据元素排完为止原理查找最小值在未排序序列中找到最小元素交换位置将该最小元素与未排序序列的第一个元素交换位置缩小范围将排序范围向后移动一位重复上述过程完成排序直到所有元素都排序完毕publicstaticvoidSelectSort(int[]ints){for(inti0;iints.Length-1;i){intminIndexi;for(intji1;jints.Length;j){if(ints[minIndex]ints[j])minIndexj;}if(minIndex!i)(ints[minIndex],ints[i])(ints[i],ints[minIndex]);}}