关于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等) ...
随机推荐
- 0.96OLED软件实现DMA串口接收数据模拟滚屏效果
实现的滚屏效果是当一屏写满时,则清空从开头接着写,不是上移的滚屏,虽然OLED有滚屏命令,但是会带水平位移效果,并且只能提前写好数据,类似于广告牌循环播放的那种. 首先是为OLED屏划分区域. 我选择 ...
- SpringCloudEureka上篇
SpringCloudEureka上篇 本文学习自<<重新定义SpringCloud>> Eureka简介 Eureka是Netflix公司开源的一款服务发现组件,该组件提供的 ...
- H5网页CAD中webpack使用详细说明
前言 webpack是用于现代 JavaScript 应用程序的静态模块打包工具,用以构建一个前端工程化项目,如vue-cli create-react-app等脚手架工具都是基于webpack的构建 ...
- TCP通信实现两个主机之间的信息交互
TCP通信概述TCP协议用来控制两个网络设备之间的点对点通信,两端设备按作用分为客户端和服务端.服务端为客户端提供服务,通常等待客户端的请求信息,有客户端请求到达之后,及时提供服务和返回响应消息:客户 ...
- IQuerable展示数据时出现重复【View在类定义的时候没有将多主键给标识出来】
废话少说,直接上图! 从上面可以看到我有一些数据是重复了,是整条记录都重复了,但是我看到数据库里面的View数据是没有重复的,那就说明问题:"可能是View在类定义的时候没有将多主键给标识出 ...
- VsCode C++ 语法检测失效不标红色波浪线 解决办法
如果enable Squiggles 无效,按照下图里配置设置解决问题. 如图:
- 【广告】UEOI 招聘减章
欢迎加入UEOI! 招聘目标:>=25人 各位++rp.
- tomcat反向代理,监控,性能优化详细步骤
第1章 tomcat简介Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同 ...
- SCI论文写作技巧-introduction和related works
introduction怎么写 a)背景介绍,现状(介绍别人研究),存在问题,怎样解决,我的做法,有何亮点 b)研究背景和重要性.引出该领域科研空白.点题-指出本文的研究课题.概述文章的核心方法论和主 ...
- vue IE9兼容flex布局 css3(转载)
原文 https://blog.csdn.net/shihezhengshz/article/details/118860562 写这文章的时候的我,心力憔悴鸭,找了好长时间,呜呜┭┮﹏┭┮ 好了,开 ...