国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于set變更通知涉及的一些知識點

這篇具有很好參考價值的文章主要介紹了關(guān)于set變更通知涉及的一些知識點。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

public class Person {
    private string name;

    public string Name {
        get { return name; }
        set {
            if (name != value) {
                name = value;
                OnNameChanged();
            }
        }
    }

    public event EventHandler NameChanged;

    protected virtual void OnNameChanged() {
        NameChanged?.Invoke(this, EventArgs.Empty);
    }
}

在這個示例中,我們聲明了一個私有字段?_name?作為存儲名稱的后端字段,并將其封裝在公共屬性?Name?中。在 setter 方法中,我們首先檢查新值是否與舊值相同。如果不同,我們才更新存儲字段,并調(diào)用?OnNameChanged()?方法來引發(fā)?NameChanged?事件。

注意,OnNameChanged?方法是使用?protected?訪問修飾符進(jìn)行定義的。這允許在繼承類中覆蓋此方法,并添加進(jìn)一步的處理邏輯。在此方法中,我們通過執(zhí)行空檢查來安全地調(diào)用?NameChanged?事件,以確保未向事件委托傳遞 null 引用。

現(xiàn)在,你可以訂閱?NameChanged?事件,并在每次?Name?屬性更改時收到通知:

var person = new Person();
person.NameChanged += (sender, e) => {
    Console.WriteLine($"Name changed to: {((Person)sender).Name}");
};

person.Name = "Alice"; // "Name changed to: Alice" 將被輸出到控制臺
person.Name = "Bob";   // "Name changed to: Bob" 將被輸出到控制臺

在此例中,我們創(chuàng)建了一個新的?Person?對象,并訂閱了其?NameChanged?事件。然后,我們兩次設(shè)置該對象的?Name?屬性,從而引發(fā)對應(yīng)的事件并顯示名稱已更改的消息。

這段代碼涉及以下知識點:

  1. 事件:NameChanged?是一個事件,它是?Person?類中聲明的一個類型為?EventHandler?的公共事件。通過這個事件,Person?類向其他對象(比如現(xiàn)在正在編寫的代碼)通知其名稱屬性已更改。
  2. 匿名函數(shù):=>?符號后面跟著一段匿名函數(shù)表達(dá)式,它被傳遞給?NameChanged +=?的右側(cè)。這個匿名函數(shù)接受兩個參數(shù)?sender?和?e,它們分別表示觸發(fā)事件的對象和事件數(shù)據(jù)。匿名函數(shù)的主體內(nèi)有一行代碼,輸出一個字符串,其中包含名稱屬性新的值,以及觸發(fā)事件的對象的名稱。
  3. 字符串插值(string interpolation):使用?$?符號將字符串格式化為帶大括號?{}?的占位符,表示需要插入變量或表達(dá)式的位置。大括號內(nèi)的表達(dá)式是一個用圓括號括起來的成員訪問表達(dá)式,它在運行時被求職,用于獲取修改后的名稱屬性的值。

NameChanged += 的加號是什么意思?

+=?表示向事件添加一個處理程序(event handler)。在這種情況下,它將匿名函數(shù)賦值給?NameChanged?事件。當(dāng)?NameChanged?事件被觸發(fā)時,事件發(fā)出通知以便所有已注冊的事件處理程序都能執(zhí)行其邏輯操作。通過使用?+=?操作符,可以將多個事件處理程序添加到同一事件中,從而實現(xiàn)事件的多播 (Multicasting)。

public event EventHandler NameChanged; 這段代碼是什么意思?

這段代碼定義了一個?NameChanged?事件,它使用?EventHandler?委托來表示事件處理程序的方法。?EventHandler?委托是 .NET 框架中預(yù)定義的一種類型,用于表示不接受任何參數(shù)并返回空值的方法。

此外,event?關(guān)鍵字聲明了該字段為一個事件,該事件只能在類內(nèi)部被觸發(fā)和訂閱。 這意味著其他代碼無法直接觸發(fā)或調(diào)用該事件。 若要觸發(fā)該事件,必須通過調(diào)用它的公共方法來實現(xiàn)。 例如,在該類中可能有一個名為?OnNameChanged?的保護(hù)虛擬方法,該方法會立即引發(fā)?NameChanged?事件。 泛型版本的?EventHandler<TEventArgs>?委托也可用于代替?EventHandler?委托,以提供更強類型的事件參數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-476386.html

到了這里,關(guān)于關(guān)于set變更通知涉及的一些知識點的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C++11一些知識點

    1、C++11實現(xiàn)生產(chǎn)者與消費者模型 2、unique_lock與lock_guard的比較 引用自:施磊老師的《C++高級課程》

    2024年02月12日
    瀏覽(21)
  • PLSQL一些常用的知識點

    此處簡單的記錄一下在 oracle中如何使用plsql語法,記錄一些簡單的例子,防止以后忘記。 統(tǒng)計總共有多少個學(xué)生,并進(jìn)行if判斷。 輸出1到100 需要放到 execute immediate 中執(zhí)行,否則會報錯。 存在更新,不存在插入。 包頭 可以簡單的理解 java 中的接口。 包體 可以簡單的理解

    2024年02月04日
    瀏覽(25)
  • mysql innodb一些知識點

    1、事務(wù)和鎖的關(guān)系; 在MySQL事務(wù)中,只要開始了一次事務(wù),就會自動加上一個共享鎖(Shared Lock)。這個鎖會在事務(wù)結(jié)束時自動釋放。如果在事務(wù)中需要更新某個數(shù)據(jù)對象,那么MySQL會將該數(shù)據(jù)對象的共享鎖升級為排他鎖(Exclusive Lock),這可以確保在其他事務(wù)中對該數(shù)據(jù)對象

    2024年02月14日
    瀏覽(25)
  • Vue項目實戰(zhàn)——【基于 Vue3.x + Vant UI】實現(xiàn)一個多功能記賬本(項目演示、涉及知識點、源碼分享)

    Vue項目實戰(zhàn)——【基于 Vue3.x + Vant UI】實現(xiàn)一個多功能記賬本(項目演示、涉及知識點、源碼分享)

    1、前言 如果你對 vue3.x 的基礎(chǔ)知識還很陌生,推薦先去學(xué)習(xí)一下 vue 基礎(chǔ) 內(nèi)容 參考鏈接 Vue2.x全家桶 Vue2.x全家桶參考鏈接 Vue3.x知識一覽 Vue3.x重點知識參考鏈接 如果你 剛學(xué)完 vue3 , 想檢查一下自己的學(xué)習(xí)成果 如果你 已學(xué)完 vue3 , 想快速回顧復(fù)習(xí)所學(xué)知識 如果你 已精通

    2024年01月18日
    瀏覽(98)
  • 使用es必須要知道的一些知識點:索引篇

    使用es必須要知道的一些知識點:索引篇

    在當(dāng)今數(shù)據(jù)驅(qū)動的世界中,Elasticsearch(簡稱ES)成為了一個強大而廣泛應(yīng)用的搜索和分析引擎。ES提供了快速、可擴展且高度可靠的數(shù)據(jù)存儲和檢索解決方案。然而,要真正掌握ES的各種功能和最佳實踐,需要通過實踐才能獲得真正的知識。 在Elasticsearch(ES)中,index操作和

    2024年02月08日
    瀏覽(31)
  • 分享刷題的一些小知識點--4.9日

    1.string庫提供了 、、==、=、=、!= 等比較運算符,比如兩個字符串s和t,直接(s==t)是正確的。 2.unordered_map 容器,直譯過來就是\\\"無序 map 容器\\\"的意思。所謂“無序”,指的是 unordered_map 容器不會像 map 容器那樣對存儲的數(shù)據(jù)進(jìn)行排序。換句話說,unordered_map 容器和 map 容器僅有

    2023年04月11日
    瀏覽(26)
  • 網(wǎng)絡(luò)層中一些零碎且易忘的知識點

    網(wǎng)絡(luò)層中一些零碎且易忘的知識點

    異構(gòu)網(wǎng)絡(luò):指傳輸介質(zhì)、數(shù)據(jù)編碼方式、鏈路控制協(xié)議以及數(shù)據(jù)單元格式和轉(zhuǎn)發(fā)機制不同,異構(gòu)即物理層和數(shù)據(jù)鏈路層均不同 虛電路:網(wǎng)絡(luò)層可以向傳輸層提供兩種類型的服務(wù),面向連接的服務(wù)稱為虛電路服務(wù),而無連接的服務(wù)稱為數(shù)據(jù)報服務(wù)。虛電路的想法是避免為發(fā)送的

    2024年02月15日
    瀏覽(24)
  • 數(shù)據(jù)結(jié)構(gòu)中一些零碎且易忘的知識點

    數(shù)據(jù)結(jié)構(gòu)中一些零碎且易忘的知識點

    第一章 緒論 數(shù)據(jù)結(jié)構(gòu)包含三個方面的內(nèi)容: 數(shù)據(jù)的邏輯結(jié)構(gòu):描述數(shù)據(jù)之間邏輯關(guān)系的、與數(shù)據(jù)的存儲無關(guān)的數(shù)學(xué)模型。相同的邏輯結(jié)構(gòu)可使用不同的存儲結(jié)構(gòu)存儲,如線性表既可順序存儲,也可鏈?zhǔn)酱鎯?線性結(jié)構(gòu):一個線性表是n個具有相同特性的數(shù)據(jù)元素的有限序列 一

    2024年02月14日
    瀏覽(22)
  • 傳輸層中一些零碎且易忘的知識點

    傳輸層中一些零碎且易忘的知識點

    端口號:共兩個字節(jié) 不同類型的端口號: 服務(wù)端端口號 熟知端口號:0~1023 登記端口號:1024~49151 客戶端使用端口號(短暫/臨時端口號):49152~65535 要記得常見應(yīng)用程序的熟知端口號 FTP:21 TELNET:23 SMTP:25 DNS:53 TFTP:69 HTTP:80 SNMP:161 首部與偽首部: 偽首部中協(xié)議字

    2024年02月15日
    瀏覽(31)
  • 關(guān)于Docker的知識點

    關(guān)于Docker的知識點

    Docker是一個快速交付應(yīng)用、運行應(yīng)用的技術(shù)。 Docker基本操作--容器 示例:創(chuàng)建運行一個Nginx容器

    2024年02月15日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包