关于C#高阶知识捡漏
高手掠过!仅仅是整理一下
自动属性: C#自动属性可以避免原来这样我们手工声明一个私有成员变量以及编写get/set逻辑
//Demo:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
匿名类:
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 代表函数的输入参数类型;
关于C#高阶知识捡漏的更多相关文章
- C#后台架构师成长之路-高阶知识体系核心
了解了这些东西,熟悉了运用基本都是高工级别的了,其他修修补补就行了.... 1.三种预定义特性:attributeUsage.Conditional.obsolete,允许创建自定义特性,派生自Sys ...
- ES6中的高阶函数:如同 a => b => c 一样简单
作者:Sequoia McDowell 2016年01月16日 ES6来啦!随着越来越多的代码库和思潮引领者开始在他们的代码中使用ES6,以往被认为是"仅需了解"的ES6特性变成了 ...
- 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. ...
- C#函数式编程-高阶函数
随笔分类 -函数式编程 C#函数式编程之标准高阶函数 2015-01-27 09:20 by y-z-f, 344 阅读, 收藏, 编辑 何为高阶函数 大家可能对这个名词并不熟悉,但是这个名词所表达的 ...
- js高阶函数应用—函数防抖和节流
高阶函数指的是至少满足下列两个条件之一的函数: 1. 函数可以作为参数被传递:2.函数可以作为返回值输出: javaScript中的函数显然具备高级函数的特征,这使得函数运用更灵活,作为学习js必定会 ...
- React 精要面试题讲解(五) 高阶组件真解
说明与目录 在学习本章内容之前,最好是具备react中'插槽(children)'及'组合与继承' 这两点的知识积累. 详情请参照React 精要面试题讲解(四) 组合与继承不得不说的秘密. 哦不好意 ...
- 迈向高阶:优秀Android程序员必知必会的网络基础
1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用 ...
- Python开发——函数【装饰器、高阶函数、函数嵌套、闭包】
装饰器 装饰器本质就是函数,为其他函数添加附加功能. 原则: 不修改被修饰函数的源代码 不修改被修饰函数的调用方法 装饰器知识储备:装饰器 = 高阶函数 + 函数嵌套 + 闭包 案例:求函数运行时间! ...
- Python之旅Day3 文件操作 函数(递归|匿名|嵌套|高阶)函数式编程 内置方法
知识回顾 常见五大数据类型分类小结:数字.字符串.列表.元组.字典 按存值个数区分:容器类型(列表.字典.元组) 标量原子(数字.字符串) 按是否可变区分:可变(列表.字典) 不可变(数字.字符串.元 ...
- python递归,装饰器,函数, 高阶函数
在函数内部,可以调用其它函数,如果一个函数在内部调用自身本身,这个函数就是递归函数 递归特性:1.必须有一个明确的结束条件 2.每次进入更深一层递归时,问题规模比上次递归都有所减少(10-8-5等) ...
随机推荐
- win10上打包的qt程序放到win7上打不开的解决方法
在win 10 上编写并打包发布了qt5.12.3 msvc2017 32bit的qt程序,在其他win10 电脑上都能正常运行,但是放到win7电脑上,运行exe时依次出现缺少"msvcp ...
- 面试:关于Zookeeper注册节点的上线和掉线
Zookeeper中有一个重要的部件Monitor(监控中心),它是Dubbo中服务治理体系中的重要一环. 监控中心在启动的时候,会通过Zookeeper的/dubbo/com.foo.BarServ ...
- clearfix解决高度塌陷和外边距重合问题
- day1 AcWing 836. 合并集合
初始化: n个下表对应n个集合,根节点的特征是父节点就是其本身. for(int i = 1; i <= n; i++) p[i] = i; M操作:如果两个元素在同一个集合中,什么也不做,否则 ...
- Linux内核红黑树1—Documentation/rbtree.txt翻译
转自:https://www.cnblogs.com/hellokitty2/p/15362630.html 1. 什么是红黑树,它们有什么用?---------------------------- ...
- 国产电源芯片DP4054 软硬件兼容TP4054 规格书资料
DP4054 是一款完整的采用恒定电流/恒定电压单 节锂离子电池充电管理芯片.其SOT小封装和较少的外部元件数目使其成为便携式应用的理想器件,DP4054 可以适合USB 电源和适配器电源工作.跟进口 ...
- 力扣1143. 最长公共子序列(dp)
给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度.如果不存在 公共子序列 ,返回 0 . 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符 ...
- 【git】7.5 git工具-搜索
资料来源: (1) https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E6%90%9C%E7%B4%A2 1.git grep 注1:使用g ...
- 修改ubuntu 源
查看源的类型,lsb_release -a Codename: jammy ?这里有可能是其他值. 找到同类型的源,修改:/etc/apt/sources.list
- 使用phpexcel导出excel和phpword导出word--简单使用
<?php namespace app\index\controller; //离线环境不能使用composer安装,只能下载包文件,然后放在vendor下,代码中require使用 requi ...