30天C#基础巩固----Lambda表达式
这几天有点不在状态,每一次自己很想认真的学习,写点东西的时候都会被各种小事情耽误,执行力太差。所以自己反思了下最近的学习情况,对于基础的知识,可以从书中和视频中学习到,自己还是需要注意下关于自己以前做的项目中的一些知识点,那些才是HR提问的关键所在。今天都6.4号了,时间过的真是快呀,学校7.18左右放假,自己打算去西安看看,能不能找到一个实习工作,不行的话只能等到大四的第一学期去走校招。可以我们大四的第一学期还有很多课,真不知道老师是如何想的。所以在这还剩不到快2个月的时间里,把自己想要学习的东西好好的学习下,提高自己的执行力和自控力。
委托,匿名函数,Lambda表达式
关于委托前面有说的,其实就是那么几个步骤,但是想在项目中熟练的使用,不是那么简单的,这些知识点都不一些不太容易掌握的,很抽象,需要通过长时间的项目代码练习才可以更好的理解里面前辈们所提倡的观点思路。
匿名函数----实现1--100的和。
/// <summary>
/// 匿名方法
/// </summary>
class Program
{
//定义委托。
public delegate int GetSumNum(int min,int max);
static void Main(string[] args)
{
//匿名方法,必须使用delegate来定义,参数和返回值必须和定义的委托一样。
GetSumNum _getSum = delegate(int min,int max)
{
int sum = 0;
for (int i =min; i <=max; i++)
{
sum += i;
}
return sum;
};
int a=_getSum(1,100); //调用匿名函数,传递参数。
Console.WriteLine(a);
Console.ReadKey();
}
}

通过Lambda表达式来得到结果,比较二者的区别和相似的地方。
/// <summary>
/// 匿名方法
/// </summary>
class Program
{
//定义委托。
public delegate int GetSumNum(int min, int max);
static void Main(string[] args)
{
//Lambda表达式 注意:要是方法体中代码很多,我们就可以写一个{ }来表示。
GetSumNum _getSum = (min, max) =>
{
int sum = 0;
for (int i = min; i <= max; i++)
{
sum += i;
}
return sum;
};
int a = _getSum(1, 100); //调用匿名函数,传递参数。
Console.WriteLine(a);
Console.ReadKey();
}
}

注意:
我们使用Lambda表达式的时候,(a,b)=>{}; a,b是我们的参数,{}里面是我们需要写的代码段,要是只有一句代码直接写在后面不需要写{}。
eg:得到1--1000之间的水仙花数。
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
class Program
{
public delegate bool GetNum(int num);
static void Main(string[] args)
{
List<int> listNum=new List<int>();
for (int i = 100; i <1000; i++)
{
listNum.Add(i);
}
//将Lambda的方法传递进去,在MyWhere中进行执行。
int[] ns=MyWhere(listNum.ToArray(), e =>
{
//123
int n1 = e%10; // 3
int n2 = e/10%10; // 2
int n3 = e/100; // 1
return (n1*n1*n1 + n2*n2*n2 + n3*n3*n3) == e;
});
Console.WriteLine("100--1000之间的水仙花数------:");
for (int i = 0; i <ns.Length; i++)
{
Console.WriteLine(ns[i]);
}
Console.ReadKey();
}
//实现委托的方法
public static int[] MyWhere(int[] num,GetNum ck)
{
List<int> list=new List<int>();
for (int i = 0; i <num.Length; i++)
{
if (ck(num[i]))
{
list.Add(num[i]);
}
}
return list.ToArray();
}
}

30天C#基础巩固----Lambda表达式的更多相关文章
- C#基础知识---Lambda表达式
一.Lambda表达式简介 Lambda表达式可以理解为匿名函数,可以包含表达式和语句.它提供了一种便利的形式来创建委托. Lambda表达式使用这个运算符--- "=>", ...
- C#基础:Lambda表达式
从委托的角度来看,Lambda表达式与匿名方法没有区别.在[C#基础:匿名方法]一文中,我使用了匿名方法来调用List<T>的FindAll方法.从C# 3.0开始,在使用匿名方法的地方, ...
- Java基础语法-Lambda表达式
1.Lambda表达式主要用于简写接口的操作等出现匿名内部类的地方,如下:我这里先定义一个Swim接口,以及它所定义的swim()方法 interface Swim{ void swim(); } 2 ...
- 30分钟入门Java8之lambda表达式
前言 Google在今年发布Android N开发者预览版,一并宣布开始支持Java 8.我们终于能在Android开发中使用到Java8的一些语言特性了.目前支持: 默认方法 lambda表达式 多 ...
- Java基础教程——Lambda表达式
Lambda表达式 Java8引入Lambda表达式,可以使代码更简洁. 格式:参数,箭头,代码 (参数名)->{代码} Lambda表达式体现了"函数式编程思想"-- 面向 ...
- Lambda 表达式的示例
本文中的过程演示如何使用 lambda 表达式. 有关 lambda 表达式的概述,请参见 C++ 中的 Lambda 表达式. 有关 lambda 表达式结构的更多信息,请参见 Lambda 表达式 ...
- Java 8 Lambda 表达式详解
一.Java 8 Lambda 表达式了解 参考:Java 8 Lambda 表达式 | 菜鸟教程 1.1 介绍: Lambda 表达式,也可称为闭包,是推动 Java 8 发布的最重要新特性. La ...
- C# LINQ查询表达式用法对应Lambda表达式
C#编程语言非常优美,我个人还是非常赞同的.特别是在学习一段时间C#后发现确实在它的语法和美观度来说确实要比其它编程语言强一些(也可能是由于VS编译器的加持)用起来非常舒服,而且对于C#我觉得他最优美 ...
- java8 Lambda表达式的新手上车指南(1)--基础语法和函数式接口
背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...
随机推荐
- kvm 简介
1. 基础概念 1.1 kvm整合入linux 内核: 1.2 kvm模型中,每一个虚拟机对于linux而言都是一个标准进程: 1.3 普通的linux进程有用户和内核两个空间,在kvm模型中定义了客 ...
- 作业七:团队项目——Alpha版本冲刺阶段-14
组内成员进行测试,对一些小问题进行了修改.
- [.net 面向对象编程基础] (14) 重构
[.net 面向对象编程基础] (14) 重构 通过面向对象三大特性:封装.继承.多态的学习,可以说我们已经掌握了面向对象的核心.接下来的学习就是如何让我们的代码更优雅.更高效.更易读.更易维护.当然 ...
- common-dbcp2数据库连接池参数说明
参数 默认值 描述 建议值 DefaultAutoCommit null 通过这个池创建连接的默认自动提交状态.如果不设置,则setAutoCommit 方法将不被调用. true Default ...
- 一则线上MySql连接异常的排查过程
Mysql作为一个常用数据库,在互联网系统应用很多.有些故障是其自身的bug,有些则不是,这里以前段时间遇到的问题举例. 问题 当时遇到的症状是这样的,我们的应用在线上测试环境,JMeter测试过程中 ...
- IOS 公共类-MyMBProgressUtil Progress显示
IOS 公共类-MyMBProgressUtil Progress显示 此公共类用于显示提示框,对MBProgress的进一步封装.可以看下面的代码 接口: @interface MyMBProgre ...
- 爱上MVC3系列~开发一个站点地图(俗称面包屑)
回到目录 原来早在webform控件时代就有了SiteMap这个东西,而进行MVC时代后,我们也希望有这样一个东西,它为我们提供了不少方便,如很方便的实现页面导航的内容修改,页面导航的样式换肤等. 我 ...
- 移动端使用localResizeIMG4压缩图片
移动h5开发避免不了上传图片,一般我们使用html自带的控件input或者使用微信上传API.但微信上传API不是任何地方都可以使用的,使用html自带的控件input上传又免不了图片体积太大,上传不 ...
- Mybatis入门例子
Mybatis是轻量级的持久化框架,的确上手非常快. Mybatis大体上的思路就是由一个总的config文件配置全局的信息,比如mysql连接信息等.然后再mapper中指定查询的sql,以及参数和 ...
- VS2012 easyui datagrid url访问之坑
VS2012 easyui datagrid url访问之坑 url属性放的是地址的话 返回的json格式必须有 total 和 rows,如下: {"total":2," ...