新手C#屬性set,get的學習(部分轉)2018.08.06

    public class person
    {
        public string name;
    }

    public class person
    {
        public string Name { set; get; }
    }

  上面的兩個類,第一個person存儲的是name屬性,因爲是public屬性,能夠由其餘類訪問,第二個person的name屬性經過了set、get進行了封裝,get、set分別是可讀可寫。等價於以下代碼this

    public class person
    {
        private string name;

        public string Name
        {

            get { return name; }

            set { name = value; }

        }
    }

  上面的代碼中name的修飾符是private,Name是public,即在外部調用person時,並不知道你內部裝的具體是個什麼東西,他只能調用Name,對get、set進行讀和寫操做,name值並不能在其餘類中進行操做。至關因而封裝了一個類,內部的東西看不見,你只有get、set兩個接口來操做這個類。spa

  在網上看到了一個很形象的比喻,person 就像銀行裏的自動取款機,你看不見裏面的錢(name),但你能用set(存錢),用get(取錢)。name是一個私有字段,是封裝在類中的,類之外的程序不能直接訪問的。C#中get、set用法中,類的set和get成員是外部程序訪問類內部屬性的惟一方法,就像你去銀行取錢,你不能直接從銀行的保險櫃裏拿錢,而是銀行營業人員把錢取出來給你的。code

  除了讀和寫的做用以外,還能夠用來斷定非法字符blog

    class Person//聲明一個Person類
    {
        private string job;//聲明爲private即在其餘類中不可調用job
        public string Apjob//屬性後面不加()加了()就成了方法 例如Apjob()
        {
            get
            {
                return this.job;//當讀取job值時執行的代碼
            }
            set//當設置Apjob屬性的使用執行的代碼
            {
                if(value=="teacher")//能夠用於斷定非法字符
                {
                    this.job = "doctor";
                    return;//用於跳出set而不執行下面的語句
                }
                this.job = value;//value是用戶設置的值,固定使用
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Person p1=new Person();
            p1.Apjob = "teacher";//執行set段
            Console.WriteLine(p1.Apjob);//執行get段
            Console.ReadKey();
        }
    }

  可看出,get、set用法中接口

  一是隱藏組件或類內部的真實成員;事件

 

  二是用來創建約束的,好比,實現「有你不行」這種約束;get

 

  三是用來響應屬性變化事件,當屬性變化的時候作某事,只要寫在set方法裏就行。string

 

  當你想讀出或寫入屬性的值時,存取標誌限定了被實現的語句。用於讀出屬性的值的存取標誌記爲關鍵字get,而要修改屬性的值的讀寫符標誌記爲set。it

 

2018.08.06class

相關文章
相關標籤/搜索