首页 > 代码库 > 【C# 语法糖】

【C# 语法糖】

【C# 语法糖】

 一, 扩展方法

  1. 对某个类功能上的扩展

  2. 特点: 使用方便,可以在不修改原代码的基础上进行扩展。 参照 linq,linq 就是一系列的扩展方法

  3. 语法: 非泛型静态类,静态方法, 第一个参数加 this,表示是对该类型的扩展

  4. 代码

  

   public static class Extension    {        private static int _defaultInt = 0;        public static int ToInt(this string str)        {            if (int.TryParse(str,out _defaultInt))            {                return _defaultInt;            }            return 0;        }    }

二, 运算符重载
  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(5, 6);

四, Linq
  1. 本质 扩展方法

  2. 使用上 推荐 方法语法 而不是 类sql 语法。方法语法可读性高,而且更符合 c# 的语法。

  3. 注意 延迟加载

  4. 语法 Linq + Lambda + var , 简洁而优美

  5. 代码

  

  List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7 };  var v = list.Where(n => n < 3);

五, 匿名类型
  1. 匿名类型 var 

  2. 使用场景 需要修改实体类属性,但又不想修改原实体类,也不想添加新的实体类,这可以用匿名类型

  3. 特点 灵活

  4. 代码

  

  Operator op = new Operator { Num = 3 };  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 ?? "我是默认值");

八, 待续...

 

【C# 语法糖】