关于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等) ...
随机推荐
- 用 yaml 写测试用例
采用 excel 的方式写测试用例,格式比较死板,比较容易出错,采用 yaml / yml 格式来写用例. 首先安装 pyyaml:pip install pyyaml 建立一个 login.yaml ...
- 使用ESP8266连接中文wifi
使用XCOM串口调试助手调试ESP8266时,想要连接学校的wifi,通过AT+CWLAP可以显示出附近所有wifi的列表,可是XCOM以ascii码格式显示文本,所以中文就乱码了. 一开始我不知道这 ...
- java8线程池创建并使用
1.创建@Configurationpublic class ThreadPoolConfig { /** * 创建线程池 */ @Bean(name = "threadPool" ...
- kuangbin学习
是有针对性的对于算法的训练 我试试QAQ
- iOS系统自带的扫码功能(二维码+条形码+识别本地图片)
扫码采用类库:AVFoundation 1.相关权限 1).需要在info.plist中添加以下权限:Privacy - Camera Usage Description(使用摄像机的权限说明) 2) ...
- open-local部署和使用
Open-Local简介 Open-local 是阿里巴巴开源,由多个组件构成的本地磁盘管理系统,目标是解决当前kubernetes本地存储能力缺失问题. Open-Local包含四大类组件: • S ...
- webpack5用url-loader(file-loader)处理图片和img-loader压缩图片
webpack-cli 4.0的版本和 webpack-dev-server 3.11.0的版本不兼容,只能用webpack@5.0 + webpack-cli@3.3.12 + webpack-de ...
- Scoped方法(防止样式名称冲突)
App.vue <template> <div> <Student/> <School></School> </div> < ...
- 福昕PDF如何以多个窗口打开文件
福昕PDF默认设置下双击打开多个文件,所有文件只会在同一个程序内显示,怎样让每个文件都使用单独一个程序,以多个窗口的形式打开呢? 福昕软件,文件 > 偏好设置 > 文档 > 勾选&q ...
- go ice相关配置
set GO111MODULE=on set GOPROXY=https://goproxy.cn,direct set GOPRIVATE=*.jd.com go get git.jd.com/ch ...