始終使用屬性(Property),而不是欄位(Data Member)

_York發表於2018-05-30

1、始終使用屬性(Property),而不是欄位(Data Member)

  C# 屬性已經晉升為一等公民,如果你的類中還有public的欄位,Stop。訪問屬性和欄位的方式是一樣的,但是屬性是用方法(methods)實現的。

當有新的需求,通過修改屬性來實現比在程式裡面修改所有的public欄位來實現需求,容易太多。

因為屬性是方法實現的,所以屬性擁有方法所擁有的一切,可以定位為virtual:,可以擴充套件為 abstract,和 interface 的一部分,還可以定義不同的訪問級別,來更好的控制類的成員的訪問

  比如定義了一個類 customer,你發現沒有檢查 customer 姓名不能為空。如果使用了屬性可以很容易的新增查詢姓名不能為空。如下:

 public class customer
    {
        public int customerId { get; set; }

        private string _customerName;
        public string customerName
        {
            get
            {
                return _customerName;
            }
            set
            {
                if ((value == null) || (value.Length == 0))
                {
                    throw new ArgumentException("客戶名稱不能為空", "customerName");
                }
                _customerName = value;
            }
        }

   

  比如要實現同步訪問,可以:

 public class customer
    {
        private int _customerId;
        public int customerId
        {
            get
            {
                lock (this)
                {
                    return _customerId;
                }
            }
            set
            {
                lock (this)
                {
                    _customerId = value;
                }
            }
        }
}

    總結:使用屬性對於需求變化有更強的適應性,更方便的修改實現方法。

 

相關文章