C# 屬性與字段


屬性和字段的區別:

  • 屬性是邏輯字段,是字段的擴展,並不占用實際的內存;而字段占用內存空間。
  • 屬性可以被其他類訪問;而非public的字段不能被直接訪問。
  • 屬性可以對接受的數據在范圍上做限定;而字段不能。
  • 屬性原則上是方法內容保存在代碼區,

 

 常規屬性和自動屬性:

 常規屬性,一般我們手動定義 私有字段並定義屬性訪問該字段,這就是常規屬性,

        private int _age;
        public int Age
        {
            get
            {
                //可添加邏輯最后已return返回
                return _age > 10 ? _age : 0; 
            }
            set
            {
                if (!_age.Equals(value))
                {
                    //TODO 添加邏輯 最后給私有字段賦值
                    _age = value;
                }
            }
        }

  

 自動屬性,一般我們做數據庫到C#集合的映射時只定義一個屬性,

Public int Age { get;set;}

 1.自動實現的屬性必須同時聲明 get 和 set 訪問器。創建 readonly 自動實現屬性時,需要將set 訪問器設置為private 。

 2自動實現的屬性上可以使用特性,不能用在支持后備字段上。 如果屬性的后備字段上使用特性,則應該只創建常規屬性。

 3.自動實現屬性get,和set中不能包含特殊的邏輯處理。與字段類似,但不同於字段。與字段不同,屬性不作為變量來分類,不能將屬性作為 ref參數或 out參數傳遞。

備注:若有遇到接口中定義屬性(屬性屬於方法故接口可以定義),但是在做數據庫數據映射並保存的時候,是不能用接口做映射的,因接口不能定義字段,而屬性不保存內容,只有字段才保存內容,當一個類繼承接口則這個類就有了接口的屬性,並自動定義字段(自動屬性),就可以保存內容了

 


免責聲明!

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



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