C#屬性get和set使用示例詳解
什么是屬性?
屬性在C#中是一種特殊的成員,它提供了對(duì)類內(nèi)部私有字段的安全訪問方式。通過屬性,您可以對(duì)外部代碼隱藏類的內(nèi)部實(shí)現(xiàn)細(xì)節(jié),同時(shí)仍然允許外界以一種受控的方式訪問和修改類的狀態(tài)。屬性看起來像是公共字段,但實(shí)際上它們是由類提供的方法來讀?。╣et)和/或?qū)懭耄╯et)私有字段。
屬性的語(yǔ)法
屬性由訪問修飾符、類型聲明、屬性名稱、以及可選的訪問器(accessors)組成。以下是基本語(yǔ)法:
[accessModifier] type propertyName
{
get { ... }
set { ... }
}accessModifier是訪問修飾符,如public,private,protected等。type是屬性的類型。propertyName是屬性的名字。get和set是訪問器,分別用于讀取和寫入屬性的值。
創(chuàng)建和使用手動(dòng)實(shí)現(xiàn)的屬性
手動(dòng)實(shí)現(xiàn)的屬性允許您完全控制 get 和 set 方法的行為。例如:
public class Person
{
private string _name;
public string Name
{
get
{
return _name;
}
set
{
if (string.IsNullOrEmpty(value))
{
throw new ArgumentException("Name cannot be null or empty.");
}
_name = value;
}
}
}在這個(gè)例子中,Name 屬性的 set 方法會(huì)檢查傳入的值是否為空或空字符串。如果是,則拋出一個(gè) ArgumentException 異常。這確保了 _name 字段不會(huì)被設(shè)置成無效的值。
自動(dòng)實(shí)現(xiàn)的屬性
自動(dòng)實(shí)現(xiàn)的屬性是C# 3.0引入的新特性,它簡(jiǎn)化了屬性的定義。當(dāng)你聲明一個(gè)自動(dòng)實(shí)現(xiàn)的屬性時(shí),編譯器會(huì)自動(dòng)生成一個(gè)私有的支持字段以及默認(rèn)的 get 和 set 方法:
public class Person
{
public string Name { get; set; }
}這里,Name 屬性沒有任何額外的邏輯,只是簡(jiǎn)單地提供了一個(gè)讀/寫接口。編譯器會(huì)在幕后創(chuàng)建一個(gè)私有字段來存儲(chǔ) Name 的值。
屬性的訪問修飾符
屬性可以有不同的訪問級(jí)別。例如,可以將一個(gè)屬性設(shè)為只讀:
public class Person
{
public string Name { get; private set; }
}上面的代碼定義了一個(gè)只能通過 set 方法內(nèi)部訪問的 Name 屬性。這意味著只有類的構(gòu)造函數(shù)或其他類的方法可以設(shè)置名字,而外部代碼只能讀取它。
如何使用屬性
一旦定義了屬性,就可以像使用公共字段一樣在類的外部訪問它:
class Program
{
static void Main()
{
Person person = new Person();
person.Name = "李四";
Console.WriteLine(person.Name);
}
}當(dāng)您在使用屬性時(shí),可以添加更多的邏輯到 get 或 set 訪問器中,比如執(zhí)行計(jì)算、數(shù)據(jù)驗(yàn)證、調(diào)用其他方法等。這樣可以讓您的類更加健壯,同時(shí)保持良好的封裝性。
到此這篇關(guān)于C#屬性 get和set如何使用的文章就介紹到這了,更多相關(guān)c# get和set使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在winform下實(shí)現(xiàn)左右布局多窗口界面的方法
在web頁(yè)面上我們可以通過frameset,iframe嵌套框架很容易實(shí)現(xiàn)各種導(dǎo)航+內(nèi)容的布局界面,而在winform、WPF中實(shí)現(xiàn)其實(shí)也很容易,通過本文給大家介紹在winform下實(shí)現(xiàn)左右布局多窗口界面的方法,本文介紹的非常詳細(xì),對(duì)winform布局相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-02-02
c# WPF中System.Windows.Interactivity的使用
這篇文章主要介紹了c# WPF中System.Windows.Interactivity的使用,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03
Unity實(shí)現(xiàn)粒子光效導(dǎo)出成png序列幀
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)粒子光效導(dǎo)出成png序列幀,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
一步步教你如何創(chuàng)建第一個(gè)C#項(xiàng)目
這篇文章主要給大家介紹了關(guān)于如何創(chuàng)建第一個(gè)C#項(xiàng)目的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-12-12
淺析C#中g(shù)oto跳轉(zhuǎn)語(yǔ)句的用法
在我們?nèi)粘9ぷ髦谐S玫腃#跳轉(zhuǎn)語(yǔ)句有break、continue、return,但是還有一個(gè)C#跳轉(zhuǎn)語(yǔ)句很多同學(xué)可能都比較的陌生就是goto,下面我們就來看看goto跳轉(zhuǎn)語(yǔ)句的用法吧2024-03-03
C#中使用1.7版本驅(qū)動(dòng)操作MongoDB簡(jiǎn)單例子
這篇文章主要介紹了C#中使用1.7版本驅(qū)動(dòng)操作MongoDB簡(jiǎn)單例子,本文給出了連接MongoDB、操作MongoDB數(shù)據(jù)等例子,需要的朋友可以參考下2015-01-01

