zoukankan      html  css  js  c++  java
  • C#语法糖

    1. 自动属性

    private string _myName;
    
    public string MyName
    {
         get { return _myName; }
         set { _myName = value; }
    }
    public string MyName { get; set; }

    2. 匿名委托和Lambda表达式

    class MyClass
    {
         public delegate void DoSomething(int a);
         //定义方法委托
         private void DoIt(int a) {
             Console.WriteLine(a);
         }
    
         private void HowtoDo(DoSomething doMethod,int a) {
             doMethod(a);
         }
    
         public static void Main(string[] args) {
             MyClass mc = new MyClass();
             //调用定义的方法委托
             mc.HowtoDo(new DoSomething(mc.DoIt), 10);
             int x = 10;
             //使用匿名委托
             mc.HowtoDo(delegate(int a){
                 Console.WriteLine(a + x);
             },10);
    
             //使用lamda表达式
             mc.HowtoDo(a=>Console.WriteLine(a+x),10);
             Console.ReadLine();
         }
    }

    3. 集合类声明

    之前我们声明一个List并给list赋初始值,必须得这么写:

    List<string> list = new List<string>();
    list.Add("a一");
    list.Add("b二");
    list.Add("c三");

    现在不需要了,直接写就可以了

    List<string> list = new List<string> {
                 "def","OK"
    };

     4. 问号的演变

    老掉牙的一个问号+冒号

    var b = 3;
    var a = b > 9?b.ToString():”0”+b;

    新宝宝两个问号 ??,它表示左边的变量如果为null则值为右边的变量,否则就是左边的变量值

    string a = null;
    var b = a??””;

    5. 类型实例化的语法糖

    public class Abc
    {
         public int ID { get; set; }
         public string Name { get; set; }
         public string Url { get; set; }
    }

    我们没有为上面的类声明构造函数,但是我们可以像下面的形式来实例化它

    public static void Main(string[] args) {
         var abc = new Abc{
             ID=1,
             Name="xuehai",
             Url="http://www.xuehai.net/"
         };
     }

    6. 扩展方法

    在c#3.5时引入了扩展方法,我们可以在不修改类源码的情况下给类增加实例方法,这个很有意义。它的实质也是一种语法糖的实现

    例如我们给String类扩展一个IsNumber的方法:

    public static class StringExt {
         static private Regex regexNumber = new Regex("\\d+");
         static public bool IsNumber(this string input)
         {
             if (string.IsNullOrEmpty(input))
             {
                 return false;
             }
             return regexNumber.IsMatch(input);
         }
    }

    我们可以在String实例上调用这个方法了

    var abc = “123”;
    var isNumber = abs.IsNumber();

    7. 匿名类

    var a = new {
         ID = 1,Name=”xuehai”,BlogUrl=”http//www.xuehai.net/”
    };

    匿名类在linq to sql或者entity framework中返回查询数据时很好用。

  • 相关阅读:
    【路由介绍】
    asp.net MVC 中枚举创建下拉列表?
    DELPHI中的快捷方式一览(完全版)
    C#连接mysql实例
    编写测试类,了解ArrayList的方法
    C# 验证IP是否正确简易方法 源代码
    C# 多线程操作样例
    C# 乘法口诀表的实现方法
    C# 调用系统API 内核 简单样例
    C# 基础 计算平均值的方法
  • 原文地址:https://www.cnblogs.com/JustRun1983/p/2609690.html
Copyright © 2011-2022 走看看