LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#中的set和get方法

admin
2021年1月30日 8:40 本文熱度 3160

在面向?qū)ο缶幊蹋∣OP)中,是不允許外界直接對(duì)類(lèi)的成員變量直接訪問(wèn)的,既然不能訪問(wèn),那定義這些成員變量還有什么意義呢?所以C#中就要用set和get方法來(lái)訪問(wèn)私有成員變量,它們相當(dāng)于外界訪問(wèn)對(duì)象的一個(gè)通道,一個(gè)“接口”。先來(lái)看一段代碼:

class Employee
  {
        private string name;
        private byte age;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public byte Age
        {
            get { return age; }
            set { age = value; }
        }
  }

  代碼中定義了兩個(gè)私有變量name和age,當(dāng)我們不想讓外界隨意訪問(wèn)該私有變量時(shí),可以使用屬性來(lái)訪問(wèn),語(yǔ)法為:

public <返回類(lèi)型(要與被訪問(wèn)變量的類(lèi)型相同)> <屬性名(不能與被訪問(wèn)變量同名)>
  {
        get{ return <被訪問(wèn)變量>;}
        set{ <被訪問(wèn)變量> = value;}
  }

  當(dāng)我們使用屬性來(lái)訪問(wèn)私有成員變量時(shí)就會(huì)調(diào)用里面的get方法,當(dāng)我們要修改該變量時(shí)就會(huì)調(diào)用set方法,當(dāng)然在定義的時(shí)候可以只定義一個(gè)get方法或只定義一個(gè)set方法。如果只定義get方法,那么這個(gè)相應(yīng)變量就是“只讀”的;如果只定義set方法,那么相應(yīng)變量就是“只寫(xiě)”的。

  既然外界可以通過(guò)set和get訪問(wèn)類(lèi)內(nèi)私有成員,那為什么不直接把它定義成共有,直接供外界訪問(wèn)呢?拿上面的Employee類(lèi)來(lái)說(shuō)明:

class Employee
    {
        private string name;
        private byte age;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        //****修改后****↓↓↓↓↓↓↓↓
        public byte Age
        {
            get { return age; }  
            set
            {                
                if (value > 10 && value<=100)   //一般在公司雇員的年齡都在10到100歲之間
                age = value;   
            }
        }
        //****修改后****↑↑↑↑↑↑↑↑
    }

上例中,set就像一位門(mén)衛(wèi)大叔一樣,只有好人才能進(jìn)來(lái)。可以通過(guò)屬性來(lái)控制對(duì)員變量的讀寫(xiě),防止對(duì)成員變量的非法賦值等。

再舉個(gè)小例子,以下是個(gè)溫度計(jì)的類(lèi):

class Thermometer
    {
        private double temperature;
        public Thermometer(double temperature)  //構(gòu)造函數(shù)
        {
            this.temperature = temperature;
        }
        public double Temperature
        {
            get { return temperature; }
            set { temperature = value; }
        }
    }

假設(shè)這里的溫度單位表示的是攝氏度(℃),如果在需求分析階段誤解了客戶的原始意愿或者客戶在日后變更了需求,需要把系統(tǒng)中所有表示溫度的變量temperature都用來(lái)表示開(kāi)爾文溫度(K)。那么不必動(dòng)系統(tǒng)中成百上千個(gè)Temperature屬性,只需在get和set函數(shù)中稍微修改一下代碼即可:

class Thermometer
    {
        private double temperature;
        public Thermometer(double temperature)  //構(gòu)造函數(shù)
        {
            this.temperature = temperature;
        }
        public double Temperature
        {
            //****修改后****↓↓↓↓↓↓↓↓
            get { return temperature-273.15; }
            set { temperature = value+273.15; }
            //****修改后****↑↑↑↑↑↑↑↑
        }
    }

建一個(gè)控制臺(tái)應(yīng)用程序來(lái)測(cè)試一下,主函數(shù)為:

class Test
    {
        static void Main(string[] args)
        {
            Thermometer a = new Thermometer(40);
            Console.WriteLine(a.Temperature);
        }
    }

上面代碼中用構(gòu)造函數(shù)給溫度設(shè)的初值為40度,代碼修改前運(yùn)行結(jié)果為“40”,代碼修改后運(yùn)行結(jié)果為“-233.15”。


該文章在 2021/1/30 8:40:21 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲欧美另类综合偷拍 | 日本中文字幕亚洲乱码视频 | 女同精品久久国产字幕 | 亚洲人成电影福利在线播放 | 日韩国产欧美一二三区 | 中文字幕欧美爱亚洲 |