C# 欄位和屬性

來源:互聯網
上載者:User

標籤:style   blog   color   使用   strong   os   

  類成員包括變數和方法。如果希望其他類能夠訪問成員變數的值,就必須定義成公有的,而將變數設為公有public,那這個成員變數的就可以被任意訪問(包括修改,讀取),這樣不利於資料安全。 C#通過屬性特性讀取和寫入欄位(成員變數),而不直接直接讀取和寫入,以此來提供對類中欄位的保護。屬性可用於類內部封裝欄位。屬性是C#物件導向技術中封裝性的體現。

屬性和欄位的區別:
  • 屬性是邏輯欄位,是欄位的擴充,並不佔用實際的記憶體;而欄位佔用記憶體空間。(這是很重要的區別)
  • 屬性可以被其他類訪問;而非public的欄位不能被直接存取。
  • 屬性可以對接受的資料在範圍上做限定;而欄位不能。

使用屬性的情況:

  • 要求欄位只能讀或者只能寫;
  • 需要限制欄位的取值範圍;
  • 在改變一個欄位的值的時候希望改變對象的其它一些狀態; 

使用欄位的情況:

  • 允許自由讀寫;
  • 取值範圍只受資料類型約束而無其他任何特定限制;
  • 值的變動不需要引發類中其它任何成員的相應變化。
樣本:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{    class Person    {        private string _name;        private string _identificationID;        private string _phoneNumber;        public string Name { get; set; }                        //可讀,可寫        public string IdentificationID { get; private set; }    //唯讀        public string PhoneNumber        {            get            {                return _phoneNumber;            }            set            {                if (value.Length != 11)                {                    Console.WriteLine("手機號碼應該為11位!");                }                else                {                    _phoneNumber = value;                }            }        }    }    class Program    {        static void Main(string[] args)        {            Person cherry = new Person();            cherry.Name = "Cherry";            cherry.PhoneNumber = "12345678910";            cherry.IdentificationID = "320000000000000000";  //報錯,由於定義的是唯讀屬性        }    }}

 

總結:雖然在實際項目的開發過程中,公用欄位和屬性在合適的條件下都可以使用,但是我們應該儘可能的使用屬性(property),而不是資料成員(field);把所有的欄位都設定為私人欄位,如果要暴露它們,則把它們封裝成屬性,這也是微軟推薦的方式。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.