86.方便的double轉string屬性 C#例子 WPF例子

在C#開發中,屬性封裝是一種常見的設計模式,它可以幫助我們更好地控制數據的訪問和修改,同時提供更靈活的功能擴展。今天,我們就來探討一個簡單而優雅的屬性封裝示例:PowerPowerFormatted

1. 問題背景

在實際開發中,我們經常需要處理一些數值類型的數據,比如功率(Power)。這些數據可能需要以不同的格式展示給用戶,比如保留幾位小數。同時,我們還需要確保這些數據的值只能通過類內部的方法來修改,以保證數據的完整性和一致性。

2. 屬性定義

2.1?Power?屬性

public double Power { get; private set; } = double.NaN;
  • 訪問修飾符

    • public get:允許外部代碼讀取這個屬性的值。

    • private set:只允許在類的內部修改這個屬性的值。外部代碼無法直接設置這個屬性的值,只能通過類內部的方法來修改。

  • 默認值double.NaN,表示這個屬性的初始值是“非數字”(Not a Number)。這通常用于表示未初始化或無效的值。

2.2?PowerFormatted?屬性

public string PowerFormatted
{get { return Power.ToString("F3"); }
}
  • 計算屬性:這個屬性沒有set訪問器,它是一個只讀的計算屬性。它的值是根據Power的值動態計算的,保留三位小數("F3")。

3. 示例代碼

以下是一個完整的示例,展示如何使用這兩個屬性:

public class PowerReader
{public double Power { get; private set; } = double.NaN;public string PowerFormatted{get { return Power.ToString("F3"); }}// 方法:更新Power的值public void UpdatePower(double newPower){Power = newPower;}
}public class Program
{public static void Main(){PowerReader powerReader = new PowerReader();// 更新Power的值powerReader.UpdatePower(123.456789);// 讀取Power的值Console.WriteLine("Power: " + powerReader.Power); // 輸出:123.456789// 讀取PowerFormatted的值Console.WriteLine("PowerFormatted: " + powerReader.PowerFormatted); // 輸出:123.457}
}

輸出結果

Power: 123.456789
PowerFormatted: 123.457

4. 優點

  1. 封裝性

    • Power 屬性的 set 訪問器是私有的,外部代碼無法直接修改它的值,只能通過類內部的方法(如 UpdatePower)來更新。這確保了數據的完整性和一致性。

  2. 靈活性

    • PowerFormatted 屬性提供了一個格式化后的字符串,方便在UI中展示。這種設計使得數據的展示和存儲分離,提高了代碼的可維護性。

5. 總結

通過這種封裝方式,我們可以更好地控制數據的訪問和修改。PowerPowerFormatted 的設計符合C#的最佳實踐。希望這個示例能給你帶來一些啟發,幫助你在實際開發中寫出更優雅的代碼。

如果你有任何問題或建議,歡迎在評論區留言,我們一起交流學習!

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

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

相關文章

bun 版本管理工具 bum 安裝與使用

在使用 node 的過程中,我們可能會因為版本更新或者不同項目的要求而頻繁切換 node 版本,或者是希望使用更簡單的方式安裝不同版本的 node,這個時候我們一般會用到 nvm 或者類似的工具。 在我嘗試使用 bun 的時候,安裝前第一個想到…

GRE,MGRE

GRE:靜態過程,有局限性 R1 : [r1]interface Tunnel 0/0/0 --- 創建一個虛擬的隧道接口 [r1-Tunnel0/0/0]ip address 192.168.3.1 24 --- 給隧道接口分配一個 IP 地址 [r1-Tunnel0/0/0]tunnel-protocol gre --- 定義接口的封裝方式 [r1-Tun…

游戲無法啟動?XINPUT1_3.dll 丟失的終極解決方案

當你興奮地啟動一款新游戲時,突然彈出一個錯誤提示——‘程序無法啟動,因為計算機中丟失 XINPUT1_3.dll’。這種問題在 PC 玩家中非常常見,尤其是運行一些較老的游戲時。XINPUT1_3.dll 是 DirectX 運行庫的關鍵組件,缺失會導致游戲…

用大語言模型學文學常識

李白的詩句“右軍本清真”中的“清真”并非指伊斯蘭教信仰,而是對王羲之(王右軍)人格和藝術境界的贊美。以下是對這一問題的詳細分析: “清真”的古代含義 在魏晉至唐代的語境中,“清真”一詞多用于形容人的品格高潔、…

css炫酷的3D水波紋文字效果實現詳解

炫酷的3D水波紋文字效果實現詳解 這里寫目錄標題 炫酷的3D水波紋文字效果實現詳解項目概述技術棧核心實現1. 基礎布局2. 漸變背景3. 文字效果實現3.1 基礎樣式3.2 文字漂浮動畫 4. 水波紋效果4.1 模糊效果4.2 水波動畫 5. 交互效果 技術要點項目難點與解決方案總結 項目概述 在…

八、重學C++—動態多態(運行期)

上一章節: 七、重學C—靜態多態(編譯期)-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/146999362?spm1001.2014.3001.5502 本章節代碼: cpp/dynamicPolymorphic.cpp CuiQingCheng/cppstudy - 碼云 - 開源中…

eventEmitter實現

沒有做任何異常處理,簡單模擬實現 事件對象的每一個事件都對應一個數組 /*__events {"事件1":[cb1,cb2],"事件2":[cb3,cb4],"事件3":[...],"事件4":[...],};*/class E{__events {};constructor(){}//注冊監聽回調on(type , callbac…

Mysql 中 B 樹 vs B+ 樹

🌳 什么是 B樹 和 B樹? 它們都是多路平衡查找樹(M-Way Search Tree),用于提升磁盤讀寫效率,常用于數據庫(如 MySQL)、操作系統中的索引結構。 🔍 B樹 和 B樹 的核心區別…

藍橋云客---九宮幻方

1.九宮幻方 - 藍橋云課 九宮幻方 題目描述 小明最近在教鄰居家的小朋友小學奧數,而最近正好講述到了三階幻方這個部分,三階幻方指的是將1~9不重復的填入一個3 * 3的矩陣當中,使得每一行、每一列和每一條對角線的和都是相同的。 三階幻方又…

OrangePi5Plus開發板不能正確識別USB 3.0 設備 (綠聯HUB和Camera)

1、先插好上電(可正確識別) 2、上電開機后插入USB 3.0 設備,報錯如下,只能檢測到USB2.0--480M,識別不到USB3.0-5Gbps,重新插拔也不行 Apr 4 21:30:00 orangepi5plus kernel: [ 423.575966] usb 5-1: re…

LiveData 和 MutableLiveData 的區別

LiveData 和 MutableLiveData 的區別 主要在于是否可以修改數據,但它們的工作原理基本相同。下面我們深入對比它們的行為、特性,以及它們在 ViewModel 和 UI 層中的使用方式。 1. LiveData 和 MutableLiveData 的基本區別 特性LiveDataMutableLiveData可…

SDK中窗口調用

存在窗口A和B的win32程序 , 當點擊窗口A中的按鈕后會彈出窗口B #include <windows.h>// 窗口 B 的窗口過程 LRESULT CALLBACK WindowProcB(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {switch (uMsg) {case WM_DESTROY:PostQuitMessage(0);break;default:ret…

進行性核上性麻痹:飲食調理為健康護航

進行性核上性麻痹是一種復雜的神經退行性疾病&#xff0c;目前雖無法根治&#xff0c;但合理的健康飲食有助于緩解癥狀、提高患者生活質量。 高蛋白質食物在患者飲食中占據重要地位。魚肉&#xff0c;尤其是富含 Omega-3 脂肪酸的三文魚、鱈魚等&#xff0c;不僅蛋白質含量豐富…

【Windows+Cursor】從0到1配置Arxiv MCP Server,實現論文自主查詢、下載、分析、綜述生成

1. 安裝UV Installation | uv powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" 將安裝路徑添加到環境變量 C:\Users\xxxxxx\.local\bin 2. git clone 代碼 git clone https://github.com/blazickjp/arxiv-mcp-server.git…

WPF 教程:給 TreeView 添加 SelectedItem 雙向綁定支持(MVVM-Friendly)

&#x1f332;WPF 教程&#xff1a;給 TreeView 添加 SelectedItem 雙向綁定支持&#xff08;MVVM-Friendly&#xff09; 在 WPF 的 MVVM 應用中&#xff0c;TreeView 是非常常見的控件&#xff0c;但它有個“頑固”的缺陷&#xff1a; ?它的 SelectedItem 不是依賴屬性&…

Linux環境下內存錯誤問題排查與修復

最近這幾天服務器總是掉線&#xff0c;要查一下服務器的問題。可以首先查看一下計算機硬件&#xff0c;這是一臺某魚上拼湊的服務器&#xff1a; sudo lshw -shortH/W path Device Class Description system NF5270M3 (To be filled by O…

函數和模式化——python

一、模塊和包 將一段代碼保存為應該擴展名為.py 的文件&#xff0c;該文件就是模塊。Python中的模塊分為三種&#xff0c;分別為&#xff1a;內置模塊、第三方模塊和自定義模塊。 內置模塊和第三方模塊又稱為庫內置模塊&#xff0c;有 python 解釋器自帶&#xff0c;不用單獨安…

windows下載安裝遠程桌面工具RealVNC-Server教程(RealVNC_E4_6_1版帶注冊碼)

文章目錄 前言一、下載安裝包二、安裝步驟三、使用VNC-Viewer客戶端遠程連接&#xff0c;輸入ip地址&#xff0c;密碼完成連接 前言 在現代工作和生活中&#xff0c;遠程控制軟件為我們帶來了極大的便利。RealVNC - Server 是一款功能強大的遠程控制服務器軟件&#xff0c;通過…

Android Dagger 2 框架的注解模塊深入剖析 (一)

本人掘金號&#xff0c;歡迎點擊關注&#xff1a;https://juejin.cn/user/4406498335701950 一、引言 在 Android 開發中&#xff0c;依賴注入&#xff08;Dependency Injection&#xff0c;簡稱 DI&#xff09;是一種強大的設計模式&#xff0c;它能夠有效降低代碼的耦合度&…

HTML語言的空值合并

HTML語言的空值合并 引言 在現代Web開發中&#xff0c;HTML&#xff08;超文本標記語言&#xff09;是構建網頁的基礎語言。隨著前端技術的快速發展&#xff0c;開發者們面臨著大量不同的工具和技術&#xff0c;尤其是在數據處理和用戶交互方面。空值合并是一些編程語言中常用…