位置:首頁 > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# 屬性和字段

提問人:劉團圓發(fā)布時間:2020-12-04

    可以通過屬性和字段訪問對象中包含的數(shù)據(jù)。這些對象數(shù)據(jù)可以用于區(qū)分不同的對象,因為同一個類的不同對象在屬性和字段中存儲了不同的值。

    包含在對象中的不同數(shù)據(jù)構(gòu)成了對象的狀態(tài)。假定一個對象類表示一杯咖啡,稱為CupOfCoffee。在實例化這個類(即創(chuàng)建這個類的對象)時,必須提供對類有意義的狀態(tài)。此時可以使用屬性和字段,讓代碼能通過該對象設置要使用的咖啡品牌,咖啡中是否加牛奶或方糖,咖啡是否即溶等。于是,給定的這杯咖啡對象就有了指定的狀態(tài),例如,加牛奶和兩塊方糖的哥倫比亞過濾咖啡。


    字段和屬性都可以鍵入,所以可將信息存儲在字段和屬性中,作為string值、int值等。但屬性與字段是不同的,因為屬性不提供對數(shù)據(jù)的直接訪問。對象能讓用戶不考慮數(shù)據(jù)的細節(jié),不需要在屬性中用一對一的方式表示。如果在CupOfCoffee實例中使用一個字段來表示方糖的數(shù)量,用戶就可以在該字段中放置自己喜歡的值,其取值范圍僅由存儲該信息的類型來限制。例如,如果使用int來存儲這個數(shù)據(jù),用戶就可以使用-2 147 483 648至2 147 483 647之間的任意值,如第3章所述。顯然,并不是所有的值都有意義,尤其是負值,一些較大的正值將需要非常大的咖啡杯。但如果使用一個屬性來表示,就可以限制這個值,例如介于0和2之間的一個數(shù)字。

    一般情況下,在訪問狀態(tài)時最好提供屬性而不是字段,因為這樣可以更好地控制各種行為,這個選擇不會影響使用對象實例的代碼,因為使用屬性和字段的語法是相同的。對屬性的讀寫訪問也可以由對象來明確定義。某些屬性是只讀的,只能查看它們的值,而不能改變它們(至少不能直接改變)。這常常是同時讀取幾個狀態(tài)的一個有效技巧。CupOfCoffee類有一個只讀屬性Description,在請求它時,就返回一個字符串,表示該類的一個實例的狀態(tài)(例如前面給出的字符串)。也可以通過查看幾個屬性,把相同的數(shù)據(jù)組合起來,但這樣的屬性可以節(jié)省時間和精力。還可以有只寫的屬性,其操作方式是類似的。


    除了對屬性的讀/寫訪問外,還可以為字段和屬性指定另一種訪問權(quán)限,稱為可訪問性??稍L問性確定了什么代碼可以訪問這些成員,它們可用于所有代碼(公共)還是只能用于類中的代碼(私有),或者使用更復雜的模式。常見的情況是把字段設置為私有,通過公共屬性訪問它們。這樣,類中的代碼就可以直接訪問存儲在字段中的數(shù)據(jù),而公共屬性禁止外部用戶訪問這些數(shù)據(jù),以防外部用戶在其中放置無效的內(nèi)容。公共成員是類公開的成員。

    要更清晰地闡明這個問題,可以把可訪問性與變量的作用域等同起來。例如,私有字段和屬性可以看成擁有它們的對象的局部成員,而公共字段和屬性的作用域也包括對象以外的代碼。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(0)
返回頂部