C# 高級編輯器語法 - 語法糖

看現(xiàn)在大神門都開了自己的簡書,跟緊大神們的節(jié)奏,拋棄有道入住簡書。
翻閱了之前的代碼,決定記錄一下C#的改進(jìn)之路和開發(fā)中常用的一些特性,以備不時之需,也方便給需要的人參考。

語法糖 ( Syntactic sugar )
也譯為糖衣語法,是由英國計算機科學(xué)家彼得·約翰·蘭達(dá)(Peter J. Landin)發(fā)明的一個術(shù)語,指計算機語言中添加的某種語法,這種語法對語言的功能性能并沒有影響,但是更方便程序員使用。通常來說使用語法糖能夠增加程序的可讀性,從而減少程序代碼出錯的機會。

屬性(Property)- 控制變量的訪問
//常規(guī)寫法
    public class Product
    {
        private string _name; //定義一個私有化 變量
        public string Name //定義一個  屬性
        {
            get { return _name; }
            set { _name = value; }
        }
    }
   //C# 3.0后,語法做了如下的簡化處理
    public class Product
    {
        public string Name { get; set; } //變量交給編譯器自動生成可看IL代碼
    }
  //C#6.0后,語法又進(jìn)行了簡化處理  ps:Bob在這里感謝 微軟攻城獅
    public class Product
    {
        public string Name { get; set; } = "Bob";  //屬性直接賦值

        //放大招  如果在聲明中已經(jīng)賦值,那么在構(gòu)造函數(shù)中依然不允許,編譯器是位多么稱職的保姆
        public string NameGet { get;}  //設(shè)置一個只讀屬性
        public Product()  //構(gòu)造函數(shù)
        {
            NameGet = "Bob"; //構(gòu)造函數(shù)中可直接給只讀屬性賦初始值  (*?▽?*)
        }

    }
var類型 - 弱化類型定義

特性:var可替代任何類型,編譯器會根據(jù)上下文來判斷你想用的真正類型,一旦初始完成就不能再給其賦與初始化類型不同的值了。var與object不同,var在效率上和使用強類型方式定義的變量完全一樣,var只能作為局部變量使用,不能用做字段也不能用做參數(shù)聲明。

    //常規(guī)定義變量
    string  name = "白色經(jīng)典長袖襯衫";   // string 
    int size = 160;                // int
    ConsoleColor color = ConsoleColor.Blue; // ConsoleColor
    //Net3.5后 編譯器會自動判斷變量類型
    var name = "白色經(jīng)典長袖襯衫";   // string 
    var size = 160;                // int
    var color = ConsoleColor.Blue; // ConsoleColor
    //放大招   高端使用  
    //這招在進(jìn)行json解析的時候非常有用,但僅限簡單結(jié)構(gòu)json
    public class Program{
        public static void Main(){
            //  匿名類 
            var product = new {
                Name = "Bob",
                Size
            };
        }}
    //發(fā)現(xiàn)沒foreach里默認(rèn)就是var
    foreach (var item in collection){}
擴展方法 - 擴展方法使你能夠向現(xiàn)有類型“添加”方法
    public static class MyExtensions
    {
        static public bool IsUpper(this string input) //定義給string類型加入IsUpper
        {
            return input == input.ToUpper();  //具體操作
        }
    }

    public class Program
    {
        public static void Main()
        {
            var name = "ABC"; //string
            var r = name.IsUpper();  //string類型操作中 加入IsUpper
        }
    }
類實例化 - 簡化構(gòu)造函數(shù)
  //先看下這個簡單的類:
  public class Product
    {
        public string Name { get; set; }
        public string Size { get; set; }
    }
  //這個類有兩個屬性,沒有聲明構(gòu)造函數(shù),可以通過下面的方法一步完成對象的實例化和初始賦值
  public class Program
    {
        public static void Main()
        {
            var product = new Product()
            {
                Name = "Bob",
                Size = "18cm"
            };
        }
    }
集合遍歷 - 簡化集合原理就是 拉姆達(dá)(Lambda)
    //通常遍歷集合中的項的代碼是這樣寫的
    List<string> Sizes = new List<string> { "L", "XL", "XXL" };
    foreach (string size in Sizes)
     {
           Console.WriteLine(size);
      }
    //語法糖簡化版
    List<string> Sizes = new List<string> { "L", "XL", "XXL" };
    Sizes.ForEach(x => Console.WriteLine(x));
委托簡化 - Action(無返回值) and Func(首參數(shù)返回值)

以前寫個委托用delegate 還要寫接口 好麻煩 微軟大大直接封裝了兩個泛型 方便直接用

    //Action<參數(shù)類型1,參數(shù)類型2 ·····> 可無參數(shù) ,不用我在說啥是委托吧=-=
    public Action<string> AProduct;
    public void Main()
    {
        AProduct = Product;
        AProduct("Bob");
    }
    public void Product(string bob)
    {
        Console.WriteLine(bob);
    }

    //func<返回類型,參數(shù)類型1,參數(shù)類型2 ·····>  可無參數(shù)但必須要返回類型
    public func<string,int> AProduct;
    public void Main()
    {
        AProduct = Product;
        Console.WriteLine(AProduct("Bob"));
    }
    public string Product(int bob)
    {
        return bob.ToString();
    }

好了就這樣收尾吧! 寫得實在累了 純手打如有不對的地方歡迎指出

版權(quán)聲明:本文為原創(chuàng)文章,未經(jīng)本人允許不得轉(zhuǎn)載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評論 19 139
  • 《ijs》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 5,644評論 0 7
  • 前言 人生苦多,快來 Kotlin ,快速學(xué)習(xí)Kotlin! 什么是Kotlin? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,699評論 9 118
  • 我應(yīng)該算易效能的老會員,聽過時間管理100講免費課程+10節(jié)付費課程+跟誰學(xué)3節(jié)課,線下目前沒有參與過,在一些不活...
    rainbow_72dd閱讀 270評論 0 2
  • 天黑了, 你還回家? 轉(zhuǎn)角的街燈, 還有逗留的倩影! 我一度以為那是你, 卻不知那是我幻想的夢。
    華語安閱讀 198評論 0 0

友情鏈接更多精彩內(nèi)容