C# WPF This用法詳解(經典)

概述

? ??this在C#中有多種用法,也比較常見,這節主要針對它常用的四種用法展開講解.

用法1:構造函數串聯執行;

用法2:通過this區分傳參和類中全局的定義;

用法3:方法擴展類;

用法4:將對象作為參數傳遞;

代碼實例

using System.Text;namespace Caliburn.Micro.Hello.ViewModels
{public class ThisUsageViewModel : Screen, IViewModel{private StringBuilder stringBuilder = new StringBuilder();public string DisplayInfo { get; set; }public ThisUsageViewModel(){DisplayName = "ThisUsageViewModel";DisplayInfo = "【1】this is ctor one";stringBuilder.AppendLine(DisplayInfo);DisplayInfo = "【2】this is ctor two";stringBuilder.AppendLine(DisplayInfo);DisplayInfo = "【3】this is CallMember";CallMember(DisplayInfo);stringBuilder.AppendLine(TestHelper.ObjectTransfer(this));//用法4:將對象作為參數傳遞DisplayInfo = stringBuilder.ToString();}/// <summary>/// 用法1:構造函數串聯執行/// </summary>/// <param name="flag"></param>public ThisUsageViewModel(bool flag) : this(){}public void CallMember(string DisplayInfo){this.DisplayInfo = DisplayInfo;//用法2:通過this區分傳參和類中全局的定義stringBuilder.AppendLine(this.DisplayInfo);this.ExtensionMethod();}public void ExtensionMethod(){double aHeight = 175;double bHeight = 1.82;stringBuilder.AppendLine($"【4】{aHeight.CMToM()}");stringBuilder.AppendLine($"【5】{bHeight.MToCM()}");}}/// <summary>/// 用法3:方法擴展類/// </summary>public static class DoubleExtension{public static double MToCM(this double value){return value * 100;}public static double CMToM(this double value){return value / 100;}}public class TestHelper{public static string ObjectTransfer(ThisUsageViewModel thisUsageView){thisUsageView.DisplayInfo = "【6】this is Object Transfer";return thisUsageView.DisplayInfo;}}
}

運行結果:

f58940f6089167a88d534eba298e6596.png

用法講解:1. 串聯構造函數

? ??構造函數通過繼承this(),新的構造函數執行時候會先執行類中默認的無參構造函數然后再執行新的構造函數;比如本實例中,如果實例化了一個類:

var thisUsageViewModel?= new ThisUsageViewModel(true);

這個類會先執行ThisUsageViewModel()中的代碼,再執行ThisUsageViewModel(bool flag) : this()里的代碼;

用法講解:2. 通過this區分傳參和類中全局的定義

? ?通過加前綴this代表調用的是類中的全局變量、屬性或者方法,尤其是方法的傳參和類中的變量名一致時,需要通過this區分;

用法講解:3. 方法擴展類

? 如本實例的類DoubleExtension,中的MToCM和CMToM,第一個參數用this標注代表是要擴展的類型,然后類和方法都需要是公共的靜態類型,這種我們就可以通過double.MToCM()或double.CMToM去調用擴展方法;

用法講解:4. 將對象作為參數傳遞

? 如本實例的

stringBuilder.AppendLine(TestHelper.ObjectTransfer(this));//用法4:將對象作為參數傳遞

this實際上就是實例化了一個對象作為參數進行傳遞.

源碼下載

?鏈接:https://pan.baidu.com/s/1RAMFfy-Kjb01f7PUevP_7w

提取碼:6666

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280023.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280023.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280023.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端node 和vue開發之環境搭建

下載nvm nodejs 的快捷鍵是配置后自動生成的 nvm 的 setting.txt配置 root: C:\dev\nvmpath: C:\dev\nodejsarch: 32proxy: root指向 nvm.exeroot: C:\dev\nvmpath: C:\dev\nodejs 配置環境變量 變量名 變量值 GIT_HOME C:\dev…

如何從特定位置開始分享YouTube視頻

Tech tutorials that start with 3 minutes of “hey guys what’s up” are the worst. Get to the point! Here’s how you can bypass that nonsense when sharing a video with your friends. 最糟糕的是從3分鐘的“嗨&#xff0c;大家好起來”開始的技術教程。 講到重點&a…

解決git提交問題error: The requested URL returned error: 403 Forbidden while accessing

2019獨角獸企業重金招聘Python工程師標準>>> git提交代碼時&#xff0c;出現這個錯誤“error: The requested URL returned error: 403 Forbidden while accessing https” 解決方法&#xff1a; 編輯.git目錄下的config文件即可。 vim .git/config [core] …

基于.NetCore開發博客項目 StarBlog - (24) 統一接口數據返回格式

1前言開發接口&#xff0c;是給客戶端&#xff08;Web前端、App&#xff09;用的&#xff0c;前面說的RESTFul&#xff0c;是接口的規范&#xff0c;有了統一的接口風格&#xff0c;客戶端開發人員在訪問后端功能的時候能更快找到需要的接口&#xff0c;能寫出可維護性更高的代…

如何將C# 7類庫升級到C# 8?使用可空引用類型

這篇文章將介紹將C# 7類庫升級到C# 8&#xff08;支持可空引用類型&#xff09;的一個案例。本案例中使用的項目Tortuga Anchor由一組MVVM風格的基類、反射代碼和各種實用程序函數組成。之所以選擇這個項目&#xff0c;是因為它很小&#xff0c;并且同時包含了慣用和不常用的C#…

android 設備名稱_如何更改您的Android TV的設備名稱

android 設備名稱Android TV is Google’s attempt at taking over the living room, and with some units being available for under $99, it’s not unheard of for users to have more than one box. The problem is, when multiple devices identify themselves identical…

AD-查找符合指定條件的用戶Get-User

以下服務器為Exchange 2010一、使用 Get-User 命令查找部門為IT的用戶Get-User -ResultSize Unlimited | ? { $_.Department -Eq "IT" } | ft Name,Department二、查找注釋為多行內容的指定用戶如下圖&#xff1a;注釋Notes信息為多行要使用 match 和 (?*) 來做匹配…

目標檢測算法之Fast R-CNN算法詳解

在介紹Fast R-CNN之前我們先介紹一下SPP Net 一、SPP Net SPP&#xff1a;Spatial Pyramid Pooling&#xff08;空間金字塔池化&#xff09; 眾所周知&#xff0c;CNN一般都含有卷積部分和全連接部分&#xff0c;其中&#xff0c;卷積層不需要固定尺寸的圖像&#xff0c;而全連…

RGB-D(深度圖像) 圖像深度

RGB-D&#xff08;深度圖像&#xff09; 深度圖像 普通的RGB三通道彩色圖像 Depth Map 在3D計算機圖形中&#xff0c;Depth Map&#xff08;深度圖&#xff09;是包含與視點的場景對象的表面的距離有關的信息的圖像或圖像通道。其中&#xff0c;Depth Map 類似于灰度圖像&…

WPF-21 基于MVVM員工管理-01

接下來我們通過兩節課程使用MVVM來開發一個簡單的Demo&#xff0c;首先我們創建一個項目名稱WPF-22-MVVM-Demo&#xff0c;目錄結構如下&#xff1a;我們在Models文件下創建Employee類并讓該類實現INotifyPropertyChanged接口&#xff0c;該類中定義編號、姓名和角色三個基本屬…

qt 蘋果應用程序_什么是蘋果的電視應用程序,您應該使用它嗎?

qt 蘋果應用程序Apple’s TV app, which recently appeared on iOS devices and Apple TV, is meant to help users discover and watch shows across an increasingly expanding lineup of television channels, as well as iTunes movies and shows, in one central app. App…

細說flush、ob_flush的區別

ob_flush/flush在手冊中的描述, 都是刷新輸出緩沖區, 并且還需要配套使用, 所以會導致很多人迷惑… 其實, 他們倆的操作對象不同, 有些情況下, flush根本不做什么事情.. ob_*系列函數, 是操作PHP本身的輸出緩沖區. 所以, ob_flush是刷新PHP自身的緩沖區. 而flush, 嚴格來講, 這…

關于jHipster框架在構建中的出現的error修復

jhipster The JDL object and the database type are both mandatory.這個錯誤應該是在構建基于jHipster的spring-cloud項目中經常遇到的&#xff0c;因為這個在這個過程中會讀取.yo-rc文件&#xff0c;之后生成相關的.json文件&#xff0c;再之后生成相關的.java文件&#xff…

protobuf編碼

proto2Protocol Buffers 是一種輕便高效的結構化數據存儲格式&#xff0c;可以用于結構化數據序列化&#xff0c;適合做數據存儲或 RPC 數據交換格式。可用于通訊協議、數據存儲等領域的語言無關、平臺無關、可擴展的序列化結構數據格式。 字段規則 required: 字段必須存在opti…

定制.NET 6.0的Middleware中間件

大家好&#xff0c;我是張飛洪&#xff0c;感謝您的閱讀&#xff0c;我會不定期和你分享學習心得&#xff0c;希望我的文章能成為你成長路上的墊腳石&#xff0c;讓我們一起精進。在本文中&#xff0c;我們將學習中間件&#xff0c;以及如何使用它進一步定制應用程序。我們將快…

Python-循環控制--個人課堂筆記

Python中的兩種循環方式&#xff08;目前學到&#xff09;&#xff1a;for循環和while循環 for循環和while循環的區別&#xff1a; for循環一般用于控制循環的次數&#xff0c;while循環則是條件循環。 操作實例-猜數字小游戲&#xff08;3次猜錯提示游戲結束&#xff09;&…

刪除microsoft_如何從您的Microsoft帳戶中刪除設備

刪除microsoftWhen you sign into Windows 8 or 10 using your Microsoft account (and other Microsoft devices, like an Xbox), those devices become associated with your account. If you want to remove an old device you’ve gotten rid of, you’ll have to pay a vi…

線程的語法 (event,重要)

Python threading模塊 2種調用方式 直接調用 12345678910111213141516171819import threadingimport timedef sayhi(num): #定義每個線程要運行的函數print("running on number:%s" %num)time.sleep(3)if __name__ __main__:t1 threading.Thread(targetsayhi,args(…

求最大值和下標值

本題要求編寫程序&#xff0c;找出給定的n個數中的最大值及其對應的最小下標&#xff08;下標從0開始&#xff09;。 輸入格式: 輸入在第一行中給出一個正整數n&#xff08;1<n≤10&#xff09;。第二行輸入n個整數&#xff0c;用空格分開。 輸出格式: 在一行中輸出最大值及…

windows應用商店修復_如何修復Windows應用商店中的卡死下載

windows應用商店修復Though it’s had its share of flaky behavior since being introduced in Windows 8, the Windows Store has gotten more reliable over time. It still has the occasional problems, though. One of the more irritating issues is when an app update…