【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#】 语法糖的更多相关文章

  1. 探索C#之6.0语法糖剖析

    阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...

  2. C#语法糖大汇总

    首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...

  3. 看看C# 6.0中那些语法糖都干了些什么(终结篇)

    终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...

  4. 看看C# 6.0中那些语法糖都干了些什么(中篇)

    接着上篇继续扯,其实语法糖也不是什么坏事,第一个就是吃不吃随你,第二个就是最好要知道这些糖在底层都做了些什么,不过有一点 叫眼见为实,这样才能安心的使用,一口气上五楼,不费劲. 一:字符串嵌入值 我想 ...

  5. 看看C# 6.0中那些语法糖都干了些什么(上篇)

    今天没事,就下了个vs2015 preview,前段时间园子里面也在热炒这些新的语法糖,这里我们就来看看到底都会生成些什么样的IL? 一:自动初始化属性 确实这个比之前的版本简化了一下,不过你肯定很好 ...

  6. C# 6.0新特性---语法糖

    转载:http://www.cnblogs.com/TianFang/p/3928172.html 所谓语法糖就是在编译器里写做文章,达到简化代码书写的目的,要慎重使用,省略过多不易理解. NULL检 ...

  7. C#语法糖,让编程更具乐趣

    一.什么是语法糖 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法 ...

  8. Java语法糖4:内部类

    内部类 最后一个语法糖,讲讲内部类,内部类指的就是在一个类的内部再定义一个类. 内部类之所以也是语法糖,是因为它仅仅是一个编译时的概念,outer.java里面定义了一个内部类inner,一旦编译成功 ...

  9. Java语法糖1:可变长度参数以及foreach循环原理

    语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...

  10. C#语法糖(Csharp Syntactic sugar)大汇总

    首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...

随机推荐

  1. Android(java)学习笔记22:我们到底该如何处理异常?

    1. 我们到底该如何处理异常? (1)原则: 如果该功能内部可以将问题处理,用try,自己能解决就自己解决问题. 如果处理不了,交由调用者处理,这是用throws,自己不能解决的问题,我们就抛出去交个 ...

  2. 记忆化搜索,FatMouse and Cheese

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1107 http://acm.hdu.edu.cn/showpro ...

  3. 【[HEOI2016/TJOI2016]游戏】

    据说是网络流棋盘模型了 我们把每一个连续子段都看成一个点,我们先把所有的行上的连续子段找出来给他们编上号,所有列上的连续子段找出来也编上号 现在每个格子都有两个编号了,\(a[i][j]\)表示行所对 ...

  4. POJ 3067 Japan 【树状数组经典】

    题目链接:POJ 3067 Japan Japan Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 32076   Accep ...

  5. idea 一次性自动导包

    当复制粘贴一段纯文本代码时,许多类需要导包. 如图 使用optimize imports了,发还是没有办法导入未导入的包,只能删除未使用导包,这跟eclipse不一样,让人很不习惯,查了好多资料都没有 ...

  6. 【luogu P1962 斐波那契数列】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1962 给你篇dalao的blog自己看吧,把矩阵快速幂的板子一改就OK #include <algor ...

  7. Rest API 开发 学习笔记

    概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着不断获取资源的表示方式,客户端应用 ...

  8. [Linux/Unix]常用命令

    1.查看日志后200行有“TNS字符串的详细信息 file_name |grep TNS 实时查看文件情况: tail -f file_name 2.查看路由情况: #Linux环境 tracerou ...

  9. Swift 中关于”??”操作符

    Swift 中关于”??”操作符 Swift 的语法在保证安全和健壮的基础上,又带有很多非常灵活的特性,比如 ?? 操作符就是其中一个.大家可能已经了解它,也可能有些同学不了解它,这里给大家整理了关于 ...

  10. 编写可维护的JavaScript---事件处理

    在JavaScript应用中事件处理是非常重要的,所有的JavaScript都是通过事件绑定到UI上的. 1. 典型用法 当事件触发的时候,事件对象event会最为回调参数传入到事件处理程序中.eve ...