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中返回查询数据时很好用。

  • 相关阅读:
    在MyEclipse中运行tomcat报错 严重: Error starting static Resources
    MyEclipse 2015 运行tomcat 内存溢出的解决方法
    (转)Tomcat内存设置详解
    Object调用控件的办法
    Hibernate主键生成方式之hilo
    (转)“中国第一程序员” 求伯君的传奇经历
    雷军相识求伯君
    (转)雷军重掌金山幕后:与求伯君暗战三年两次逼宫
    华军软件发展及盈利模式
    中年人编程
  • 原文地址:https://www.cnblogs.com/JustRun1983/p/2609690.html
Copyright © 2011-2022 走看看