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

  • 相关阅读:
    Python3基础 函数 未指定返回值,返回NONE
    Python3基础 函数 有参数有返回值 对传入的参数加1
    Python3基础 函数 无参数无返回值 调用会输出hello world的函数
    Python3基础 函数 收集参数(tuple)+普通参数 的示例
    MVC中几种常用ActionResult
    sqlserver 中存储过程的基础知识记录
    常用的正则表达式方法2
    常用的正则表达式方法1
    vs2012运行项目报未能加载文件或程序集“System.Web.Mvc, Version=4.0.0.1,Culture=neutral”问题和解决方法
    怎样解决PowerDesigner15出现许可证过期问题?
  • 原文地址:https://www.cnblogs.com/JustRun1983/p/2609690.html
Copyright © 2011-2022 走看看