高手掠过!仅仅是整理一下

自动属性:  C#自动属性可以避免原来这样我们手工声明一个私有成员变量以及编写get/set逻辑

代码如下

//Demo:

public class User

{

public int Id { get; set; }

public string Name { get; set; }

public int Age { get; set; }

}

匿名类:

l将一组只读属性封装到单个对象中,而无需首先显式定义一个类型。 类型名由编译器生成,并且不能在源代码级使用。
代码如下:
//

var v = new { Amount = 108, Message = "Hello" };

对象初始化器,集合初始化器:

代码如下:

List<Person> people = new List<Person>{

new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 },

new Person { FirstName = "Bill", LastName = "Gates", test02 = 85},

new Person { FirstName = "Susanne", Age = 32 },

null,

};

Person person = new Person() { FirstName = “Scott”, LastName = “Guthrie”, test02 = 56 };

扩展方法:

 1 namespace ConsoleApplication2
2 {
3 public static class StringDemo
4 {
5 /// <summary>
6 /// 扩展方法
7 /// </summary>
8 /// <param name="txt"></param>
9 /// <param name="str">要传入的数据</param>
10 /// <returns></returns>
11 public static string strSet(this string txt, string str)
12 {
13 ///默认 扩展方法的使用必须是 同一 命名空间下
14 ///注意扩展方法 满足 静态类 静态方法
15 return str;
16
17 }
18 }
19 public class Demo
20 {
21 public string Demostring()
22 {
23 string str="Demmo";
24 return str.strSet(str);
25 }
26 }
27 }

Lambda表达式:

在介绍lamada表达式之前,先要说一下委托:

委托是一个类型,指向一个方法的指针(安全的函数指针)
代码如下:

 1  /// <summary>
2 /// delegate 编译时生成一个class
3 /// </summary>
4 /// <param name="num1"></param>
5 /// <param name="num2"></param>
6 /// <returns></returns>
7 public delegate string number(string num1, string num2);
8 public class Demo
9 {
10 public string test()
11 {
12 string number1 = "number1";
13 string number2 = "number2";
14 //以下会逐过程演化 直至 Lambda
15 //方法一
16 //number lo = new number(Demostring);
17 //方法二
18 //number lo = delegate(string num1, string num2) { return num1 + num2; };
19 //方法三
20 //number lo=(string num1, string num2)=>{return num1 + num2;}; // => 等于 goes to
21 //方法四
22 number lo = (num1, num2) => { return num1 + num2; };
23 return lo(number1, number2);
24
25 //如果需要自定义委托,推荐使用 系统委托
26 //最常用的委托区别
27 Func<> //具有返回值
28
29 Action<>//没有返回值
30
31
32 }
33 public string Demostring(string number1, string number2)
34 {
35 return number1 + number2;
36 }
37
38 }

几种系统委托的详解:

<>里的out代表函数返回值类型;

<>里的in 代表函数的输入参数类型;

System.Func 代表有返回类型的委托
public delegate TResult  Func<out TResult>();
public delegate TResult  Func<in T, out TResult>(T arg);
 
注:输入泛型参数-in 最多16个,输出泛型参数 -out 只有一个。
System.Action 代表无返回类型的委托
public delegate void Action<in T>(T obj);    //list.Foreach
public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2);
 
注:参数最多16个
System.Predicate<T> 代表返回bool类型的委托   - 用作执行表达式
public delegate bool Predicate<in T>(T obj);  //list.Find
System.Comparison<T> 代表返回int类型的委托  - 用作比较两个参数的大小
public delegate int Comparison<in T>(T x, T y); //list.Sort

关于C#高阶知识捡漏的更多相关文章

  1. C#后台架构师成长之路-高阶知识体系核心

    了解了这些东西,熟悉了运用基本都是高工级别的了,其他修修补补就行了.... 1.三种预定义特性:attributeUsage.Conditional.obsolete,允许创建自定义特性,派生自Sys ...

  2. ES6中的高阶函数:如同 a => b => c 一样简单

    作者:Sequoia McDowell 2016年01月16日 ES6来啦!随着越来越多的代码库和思潮引领者开始在他们的代码中使用ES6,以往被认为是"仅需了解"的ES6特性变成了 ...

  3. Cloudera Hadoop 5& Hadoop高阶管理及调优课程(CDH5,Hadoop2.0,HA,安全,管理,调优)

    1.课程环境 本课程涉及的技术产品及相关版本: 技术 版本 Linux CentOS 6.5 Java 1.7 Hadoop2.0 2.6.0 Hadoop1.0 1.2.1 Zookeeper 3. ...

  4. C#函数式编程-高阶函数

    随笔分类 -函数式编程 C#函数式编程之标准高阶函数 2015-01-27 09:20 by y-z-f, 344 阅读, 收藏, 编辑 何为高阶函数 大家可能对这个名词并不熟悉,但是这个名词所表达的 ...

  5. js高阶函数应用—函数防抖和节流

    高阶函数指的是至少满足下列两个条件之一的函数: 1. 函数可以作为参数被传递:2.函数可以作为返回值输出: javaScript中的函数显然具备高级函数的特征,这使得函数运用更灵活,作为学习js必定会 ...

  6. React 精要面试题讲解(五) 高阶组件真解

    说明与目录 在学习本章内容之前,最好是具备react中'插槽(children)'及'组合与继承' 这两点的知识积累. 详情请参照React 精要面试题讲解(四) 组合与继承不得不说的秘密. 哦不好意 ...

  7. 迈向高阶:优秀Android程序员必知必会的网络基础

    1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用 ...

  8. Python开发——函数【装饰器、高阶函数、函数嵌套、闭包】

    装饰器 装饰器本质就是函数,为其他函数添加附加功能. 原则: 不修改被修饰函数的源代码 不修改被修饰函数的调用方法 装饰器知识储备:装饰器 = 高阶函数 + 函数嵌套 + 闭包 案例:求函数运行时间! ...

  9. Python之旅Day3 文件操作 函数(递归|匿名|嵌套|高阶)函数式编程 内置方法

    知识回顾 常见五大数据类型分类小结:数字.字符串.列表.元组.字典 按存值个数区分:容器类型(列表.字典.元组) 标量原子(数字.字符串) 按是否可变区分:可变(列表.字典) 不可变(数字.字符串.元 ...

  10. python递归,装饰器,函数, 高阶函数

    在函数内部,可以调用其它函数,如果一个函数在内部调用自身本身,这个函数就是递归函数 递归特性:1.必须有一个明确的结束条件 2.每次进入更深一层递归时,问题规模比上次递归都有所减少(10-8-5等) ...

随机推荐

  1. 10个.NetCore实用的开源框架项目

    今天我们一起梳理下10个,比较受到大家欢迎的.NetCore开源框架项目.1.FytSoaCms 前后端分离CMS系统 项目简介 这是一个基于.Net 3构建的简单.跨平台.模块化建站系统.系统业务简 ...

  2. desginer启动就直接卡死

    博主经验: 请不要开有道词典    请不要开有道词典         请不要开有道词典

  3. Linux-samba共享

    CentOS8 中 Samba环境搭建(满足Linux和Windows系统之间文件共享传输) Samba服务器通信协议(Server Messages Block)就是是为了解决局域网内的文件或打印机 ...

  4. SQL注入之延时注入(10)

    以下提供两种方式进行延时注入 GET /sqli/Less-10/?id=1"+and+sleep(5)--+ HTTP/1.1 Host: 192.168.245.146:6101 Use ...

  5. 基2和基4FFT

    1.1 FFT的必要索引变换 基2算法需要位顺序的反转位逆序,而基4算法需要首先构成一个2位的数字,再反转这些数字,称为数字逆序. 1.1 位逆序和数字逆序 1.2 FFT的复数乘法转实数乘法 \[X ...

  6. C#消息泵探索(二)

    ​ 引言: 上篇文章里简单的解释了C#的消息泵原理,这里我们以winform为例详细地了解一下实现代码. 底层实现 [DllImport(ExternDll.User32, ExactSpelling ...

  7. Windows系统的显示器校正

    莫名其妙的显示器显示的内容整体向上偏移,导致一些页面在最大化窗口时,看不见页面的标题,及操作按钮,如页面的关闭,缩小按钮. 解决方法:点击显示器下方的menu按钮,找到 设定 选项,再选择 复位 即可 ...

  8. superset2.0.0 支持MaxCompute 时间颗粒

    编译的时候需要在superset/superset/db_engine_specs以下路径增加一个 odps.py的文件 # Licensed to the Apache Software Found ...

  9. 越权检测 burp插件 autorize 使用

    Autorize 官方描述 Autorize 是 Burp Suite 的自动授权强制检测扩展.它是由应用程序安全专家 Barak Tawily 用 Python 编写的.Autorize 旨在通过执 ...

  10. Unity 在2D中实现LookAt,跟随鼠标转动

    Vector3 v = (target.position - transform.position).normalized; transform.right = v;