c#4.5新語法--自動屬性和隱式類型


1、自動屬性
    自動屬性是c#中屬性定義的兩種形式的一種:傳統屬性定義、自動屬性。
    1.1 傳統屬性定義
        private int _age;
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
 1.2 自動屬性
         public int Age{get;set;}//該句代碼的作用和上面傳統屬性定義的語句的作用是一樣的
1.3 兩種屬性定義形式的優缺點對比
 1.3.1 傳統屬性定義形式
    缺點:定義屬性的代碼多 語法不簡潔 繁瑣
    優點:定義屬性的時候,可以帶一些邏輯判斷,這是自動屬性所不能做到的。
          例如:
       private int _age;
        public int Age
        {
            get { return _age; }
            set {
                if((0<value)&&(value<200))
                {
                _age = value;
                }
            }
        }
    1.3.2 自動屬性定義形式
       優點:定義語法簡介,高效、減少程序員書寫的代碼量
       缺點:定義屬性的時候,不能做一些邏輯判斷。
2、屬性的作用
  1、定義屬性可以保護類的私有字段(封裝性)
  2、簡化了對類的調用(定義屬性之后,要調用累得字段_age,不需要再實例化類了)

3、隱式類型 var
3.1概述
  定義變量的方式有兩種:傳統定義方式、定義成隱式類型。
  傳統定義方式:數據類型+變量名(定義的時候可以初始化,也可以不初始化) int k=0;int k;
  隱式類型定義方式:var+變量名(定義的時候必須初始化)var k=0;、
3.2 注意
(1).聲明的同時必須初始化,因為編譯時要根據初始化值類型來推斷var的類型;
(2).聲明后不能再修改數據類型,因為初始化的時候已經確定了var的類型了;
(3).只能作為方法局部變量使用。類的成員字段、方法的形參和返回值都不能使用!因為無法在編譯時確定他們的類型!
(4).初始化表達式不能是匿名函數和null。
(5)、隱式類型不是動態類型,編譯的時候,.net框架把var k=0;轉換成了int k=0;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM