【C#】 语法糖
【C#】 语法糖
一, 扩展方法
1. 对某个类功能上的扩展
2. 特点: 使用方便,可以在不修改原代码的基础上进行扩展。 参照 linq,linq 就是一系列的扩展方法
3. 语法: 非泛型静态类,静态方法, 第一个参数加 this,表示是对该类型的扩展
4. 代码
public static class Extension
{
private static int _defaultInt = ;
public static int ToInt(this string str)
{
if (int.TryParse(str,out _defaultInt))
{
return _defaultInt;
}
return ;
}
}
二, 运算符重载
1. 语法: 静态方法, 方法名 operator 加 运算符,参数类型 当前类
2. 不是很常用
3. 代码
public class Operator
{
public int Num { get; set; } public static int operator +(Operator o1, Operator o2)
{
return o1.Num + o2.Num;
}
}
三,Lambda
1. Lambda 可以看成是对委托的简化
2. 语法 ()=>{...}
3. Lambda 开始学习时会非常不习惯,但用惯了会非常上瘾的。代码变得更简洁。另 委托 推荐使用系统定义的 Action 和 Func,不需要自己去定义委托类型
4. 注意 延迟加载
5. 代码
Func<int, int, int> addFunc = (x, y) => x + y;
int i = addFunc(, );
四, Linq
1. 本质 扩展方法
2. 使用上 推荐 方法语法 而不是 类sql 语法。方法语法可读性高,而且更符合 c# 的语法。
3. 注意 延迟加载
4. 语法 Linq + Lambda + var , 简洁而优美
5. 代码
List<int> list = new List<int> { , , , , , , };
var v = list.Where(n => n < );
五, 匿名类型
1. 匿名类型 var
2. 使用场景 需要修改实体类属性,但又不想修改原实体类,也不想添加新的实体类,这可以用匿名类型
3. 特点 灵活
4. 代码
Operator op = new Operator { Num = };
var v = new { OP = op, Name = "我是var" };
Console.WriteLine(v.OP.Num + v.Name);
六, 方法参数默认值
1. 简化重载, 将多个重载方法合并,减少代码量
2. 代码
private static void Main(string[] args)
{
ShowName();
ShowName("不是默认");
Console.ReadLine();
}
private static void ShowName(string name = "默认名称")
{
Console.WriteLine(name);
}
七, 运算符
1. 三元 :
a. 替换简单的 if else
b. 语法 Console.WriteLine(i > 0 ? "大于0" : "小于0");
2. 默认值 :
a. 参数默认值,用在数据库非空非常好用
b. 语法 Console.WriteLine(s ?? "我是默认值");
八, const, readonly
1. const 常量:
a. 只能在创建实例时赋值且必须得赋值,赋值后后不能更改值
b. 静态的
c. 修饰引用类型只能是 string 或 null, 其他引用类型无法修饰
2. readonly 只读:
a. 只能在创建实例时赋值,或在构造函数里赋值
b. 可以是静态的,也可以是非静态的。静态的只能在静态构造里赋值,非静态的只能在非静态构造里赋值。
c. 可以修饰任何类型
【C#】 语法糖的更多相关文章
- 探索C#之6.0语法糖剖析
阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...
- C#语法糖大汇总
首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...
- 看看C# 6.0中那些语法糖都干了些什么(终结篇)
终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...
- 看看C# 6.0中那些语法糖都干了些什么(中篇)
接着上篇继续扯,其实语法糖也不是什么坏事,第一个就是吃不吃随你,第二个就是最好要知道这些糖在底层都做了些什么,不过有一点 叫眼见为实,这样才能安心的使用,一口气上五楼,不费劲. 一:字符串嵌入值 我想 ...
- 看看C# 6.0中那些语法糖都干了些什么(上篇)
今天没事,就下了个vs2015 preview,前段时间园子里面也在热炒这些新的语法糖,这里我们就来看看到底都会生成些什么样的IL? 一:自动初始化属性 确实这个比之前的版本简化了一下,不过你肯定很好 ...
- C# 6.0新特性---语法糖
转载:http://www.cnblogs.com/TianFang/p/3928172.html 所谓语法糖就是在编译器里写做文章,达到简化代码书写的目的,要慎重使用,省略过多不易理解. NULL检 ...
- C#语法糖,让编程更具乐趣
一.什么是语法糖 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法 ...
- Java语法糖4:内部类
内部类 最后一个语法糖,讲讲内部类,内部类指的就是在一个类的内部再定义一个类. 内部类之所以也是语法糖,是因为它仅仅是一个编译时的概念,outer.java里面定义了一个内部类inner,一旦编译成功 ...
- Java语法糖1:可变长度参数以及foreach循环原理
语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...
- C#语法糖(Csharp Syntactic sugar)大汇总
首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...
随机推荐
- Android(java)学习笔记6:实现Runnable接口创建线程 和 使用Callable和Future创建线程
1. 前面说的线程的实现是新写一个子类继承Thread: 是将类声明为 Thread 的子类.该子类应重写 Thread 类的 run 方法.接下来可以分配并启动该子类的实例 2. 这里说的方案2是指 ...
- Android(java)学习笔记13:线程组的概述和使用
1. Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制. (1)默认情况下,所有的线程都属于主线程组. public final T ...
- bzoj2111 [ZJOI2010]排列计数
Description 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic ...
- HDU 6103
题意: 求最长的两个不相交的子序列,dis <= m : 分析: 当时二分了答案,暴力匹配,TLE了,然后考虑了,O(n^2)预处理出所有区间 dis,然后答案是所有dis中>=m的最长长 ...
- Gym - 101334F 单调栈
当时我的第一想法也是用单调栈,但是被我写炸了:我也不知道错在哪里: 看了大神的写法,用数组模拟的: 记录下单调递增栈的下标,以及每个数字作为最小值的最左边的位置. 当有数据要出栈的时候,说明栈里的数据 ...
- 【转】android ListView详解
由于google doc 很多人都打不开,故更新了源码下载地址 [源码下载]----2011-01-18 在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根 ...
- android jni 之C语言基础
*含义 1.乘法 3*5 2.定义指针变量 int * p://定义了一个名字叫p的变量,能够存放int数据类型的地址 3.指针运算符, //如果p是一个已经定义好的指针变量则*p表示以p的内容为地址 ...
- 简单实用的.htaccess文件配置
.htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能.. ...
- 自己理解的数据库shcema
不懂就被人嘲笑呀 ,你还不知道怎么说. 从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点 ...
- iOS Xcode 小技巧,提升理解查询能力,Command + 点击鼠标右键 Jump to Definition等
前言: 介绍下Xcode 小技巧,以及一下快捷键,让你调试程序更加出类拔萃,安排! Command + 点击鼠标右键 Jump to Definition,可能你平时也在用,但是你明白全部的用法吗,试 ...