最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#屬性訪問器Set與Get詳解

 更新時間:2026年01月09日 09:15:59   作者:鈺fly  
本文總結(jié)了C#中屬性Set和Get訪問器的核心概念,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、核心概念對比

概念定義作用訪問權(quán)限示例
字段private string name;存儲數(shù)據(jù)通常私有private int age;
屬性public string Name { get; set; }訪問數(shù)據(jù)通常公有public int Age { get; set; }

二、屬性的三種寫法

1.完整寫法(原始寫法)

private string _name;  // 私有字段

public string Name     // 公有屬性
{ 
    get 
    {
        return _name;  // 返回字段值
    }
    set 
    {
        _name = value; // 設(shè)置字段值
    }
}

2.簡化寫法

// 如果只是簡單傳遞值,可以簡化
private int _id;
public int Id { get { return _id; } set { _id = value; } }

3.自動屬性(語法糖)

// 編譯器自動生成私有字段
public bool Sex { get; set; }
public int Age { get; set; }

三、Set 和 Get 訪問器的本質(zhì)

Set 訪問器

// 本質(zhì):一個設(shè)置值的方法
public string Name
{
    set  // 相當(dāng)于:public void SetName(string value)
    {
        _name = value;  // value 是用戶傳入的值
    }
}

// 使用:p.Name = "張三";
// 相當(dāng)于:p.SetName("張三");

Get 訪問器

// 本質(zhì):一個獲取值的方法
public string Name
{
    get  // 相當(dāng)于:public string GetName()
    {
        return _name;
    }
}

// 使用:string name = p.Name;
// 相當(dāng)于:string name = p.GetName();

四、訪問器的實際應(yīng)用(重要)

1.添加驗證邏輯

private int _age;
public int Age
{ 
    get { return _age; }
    set 
    {
        if (value < 0 || value > 200)
            throw new Exception("年齡必須在0-200之間");//做一個限定值 不在值內(nèi)報異常
        _age = value;
    }
}

2.添加額外邏輯

private string _name;
public string Name
{
    get 
    {
        Console.WriteLine("獲取Name值");
        return _name + " 視覺67班";  // 返回時添加額外信息
    }
    set 
    {
        Console.WriteLine($"設(shè)置Name值: {value}");
        _name = value;
    }
}

3.只讀或只寫屬性

// 只讀屬性(只有g(shù)et)
public string Id { get; } = Guid.NewGuid().ToString();

// 私有set
public string Name { get; private set; }

// 只寫屬性(不常見)
private string _secret;
public string Secret { set { _secret = value; } }

六、為什么要用屬性而不是字段

1.數(shù)據(jù)封裝

// ? 不好:直接暴露字段
public int Age;  // 外部可以直接設(shè)置為負(fù)值

// ? 好:通過屬性控制
private int _age;
public int Age
{
    get { return _age; }
    set 
    {
        if (value >= 0 && value <= 150)
            _age = value;
    }
}

2.向后兼容

// 第一版:直接使用字段
public int Score;

// 第二版:改為屬性,添加驗證
private int _score;
public int Score
{
    get { return _score; }
    set 
    {
        if (value >= 0 && value <= 100)
            _score = value;
    }
}
// 外部代碼無需修改,仍然使用 obj.Score

3.數(shù)據(jù)綁定支持

// WPF、WinForms 等 UI 框架支持屬性綁定
public string UserName { get; set; }  // 可以綁定到 TextBox

八、常見錯誤

? 錯誤1:無限遞歸

public string Name
{
    get { return Name; }  // ? 遞歸調(diào)用自身
    set { Name = value; } // ? 遞歸調(diào)用自身
}

// ? 正確:引用字段
public string Name
{
    get { return _name; }    // ?
    set { _name = value; }   // ?
}

? 錯誤2:忘記字段

public int Score
{
    get { return ???; }  // ? 沒有字段可返回
    set { ??? = value; } // ? 沒有字段可賦值
}

// ? 正確:先定義字段
private int _score;
public int Score
{
    get { return _score; }
    set { _score = value; }
}

九、一句話總結(jié)

字段存儲數(shù)據(jù)要私有,屬性訪問數(shù)據(jù)要公有。Set 是設(shè)置值的方法,Get 是獲取值的方法。需要驗證用完整屬性,簡單情況用自動屬性。

到此這篇關(guān)于C#屬性訪問器Set與Get詳解的文章就介紹到這了,更多相關(guān)C#屬性訪問器Set與Get內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入理解C#管道式編程

    深入理解C#管道式編程

    這篇文章主要給大家介紹了關(guān)于C#管道式編程的介紹與實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • C# Guid.NewGuid獲得隨機(jī)數(shù)

    C# Guid.NewGuid獲得隨機(jī)數(shù)

    根據(jù)GUID獲得種子,然后獲得隨機(jī)數(shù),這個是完全隨機(jī)的
    2013-04-04
  • c#高效的線程安全隊列ConcurrentQueue<T>的實現(xiàn)

    c#高效的線程安全隊列ConcurrentQueue<T>的實現(xiàn)

    這篇文章主要介紹了c#高效的線程安全隊列ConcurrentQueue<T>的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • WPF的ListView控件自定義布局用法實例

    WPF的ListView控件自定義布局用法實例

    這篇文章主要介紹了WPF的ListView控件自定義布局的方法,結(jié)合實例形式分析了WPF中ListView控件的布局方法,需要的朋友可以參考下
    2016-07-07
  • C#中String.LastIndexOf方法小結(jié)

    C#中String.LastIndexOf方法小結(jié)

    String.LastIndexOf()是C#中string類的一個方法,它用于在字符串中查找指定子字符串(或字符)最后一次出現(xiàn)的位置,并返回其索引,本文主要介紹了C#中String.LastIndexOf方法小結(jié),感興趣的可以了解一下
    2024-01-01
  • C#?Winform文本面板帶滾動條的實現(xiàn)過程

    C#?Winform文本面板帶滾動條的實現(xiàn)過程

    當(dāng)數(shù)據(jù)過多時,往往無法在一頁中展示,所以非常需要一個滾動條來調(diào)節(jié)頁面內(nèi)容,這篇文章主要給大家介紹了關(guān)于C#?Winform文本面板帶滾動條的實現(xiàn)過程,需要的朋友可以參考下
    2022-12-12
  • C#溫故而知新系列教程之閉包

    C#溫故而知新系列教程之閉包

    閉包是將一些執(zhí)行語句的封裝,可以將封裝的結(jié)果像對象一樣傳遞,在傳遞時,這個封裝依然能夠訪問到原上下文。下面這篇文章主要給大家介紹了關(guān)于C#中閉包的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-05-05
  • C#實現(xiàn)多線程的幾種方式常用場景分析

    C#實現(xiàn)多線程的幾種方式常用場景分析

    多線程是C#中一個重要的概念,多線程指的是在同一進(jìn)程中同時運(yùn)行多個線程的機(jī)制,多線程適用于需要提高系統(tǒng)并發(fā)性、吞吐量和響應(yīng)速度的場景,可以充分利用多核處理器和系統(tǒng)資源,提高應(yīng)用程序的性能和效率,這篇文章主要介紹了C#實現(xiàn)多線程的幾種方式,需要的朋友可以參考下
    2024-05-05
  • c#操作sql server2008 的界面實例代碼

    c#操作sql server2008 的界面實例代碼

    這篇文章主要介紹了c#操作sql server2008 的界面實例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • C#通過NPOI操作Excel的實例代碼

    C#通過NPOI操作Excel的實例代碼

    C#操作Excel的方法有很多種,本文介紹了C#通過NPOI操作Excel,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01

最新評論

奉节县| 旺苍县| 依安县| 河间市| 尖扎县| 邵阳市| 尼勒克县| 贺兰县| 宁化县| 蒲城县| 海宁市| 双辽市| 龙胜| 嘉定区| 邵东县| 亳州市| 襄垣县| 英吉沙县| 扎赉特旗| 金坛市| 镇巴县| 富顺县| 桐乡市| 拉萨市| 赤壁市| 红安县| 玉山县| 曲靖市| 尚志市| 综艺| 贵州省| 鄂伦春自治旗| 文成县| 涟源市| 九江市| 漾濞| 芦溪县| 广汉市| 八宿县| 陵水| 太谷县|