C# 字段(field) ,屬性(property)


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";  //報錯,由於定義的是只讀屬性
        }
    }
}

 


免責聲明!

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



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