C#字段和屬性:
類成員包括變量和方法。如果希望其他類能夠訪問成員變量的值,就必須定義為公有的,而將變量設為公有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"; //報錯,由於定義的是只讀屬性 } } }