使用泛型加載保存數據

文章速覽

  • 泛型
    • 泛型概述
    • 定義
    • 優點
  • 實例
    • 加載數據
    • 保存數據

一個贊,專屬于你的足跡!

泛型

泛型概述

泛型(Generics)是 C# 中一種重要的編程特性,它允許程序員編寫靈活且類型安全的代碼。通過使用泛型,可以創建類、接口、方法等,使其在使用時能夠處理不同類型的參數,從而實現代碼的復用和更高的類型安全。

定義

泛型類型參數:在定義泛型類、接口或方法時,使用一個占位符(稱為類型參數)來表示將要使用的具體類型。例如,在泛型類 List 中,T 就是一個類型參數。

泛型類型實參:在使用泛型類、接口或方法時,指定實際的類型來代替類型參數。例如,List 中的 int 就是類型實參。

優點

類型安全:在編譯時期就能檢查類型錯誤,避免運行時期出現類型相關的錯誤。

代碼復用:編寫一組通用的代碼邏輯,適用于多種不同的數據類型,避免為每種類型重復編寫相似的代碼。

性能提升:在處理值類型時,避免了裝箱(boxing)和拆箱(unboxing)操作,提高了程序的執行效率。

靈活性:可以根據需要隨時指定不同的類型參數,使代碼更加靈活。

實例

加載數據

        /// <summary>/// 加載數據/// </summary>/// <returns></returns>public T LoadData<T> (string fileName)where T : class{T ret = null;try{string filePath = Path.Combine(GetDVDAppConfigPath(), fileName);// 如果當前文件不存在,則創建一個默認的if (!File.Exists(filePath)){return null;}var file = File.ReadAllText(filePath);ret = JsonConvert.DeserializeObject<T>(file);}catch (Exception ex){//此處需要根據實際需求進行修改throw new Exception($"加載數據失敗,{ex.Message}");}return ret;}

保存數據

/// <summary>/// 保存數據/// </summary>/// <typeparam name="T"></typeparam>/// <param name="data"></param>/// <param name="fileName"></param>public void SaveData<T>(T data, string fileName){string filePath = Path.Combine(GetDVDAppConfigPath(), fileName);File.WriteAllText(filePath, JsonConvert.SerializeObject(data, Formatting.Indented));}

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

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

相關文章

Redis內存淘汰策略和過期鍵刪除策略有哪些?

Redis 提供 8 種內存淘汰策略&#xff0c;以下是詳細解析及場景建議&#xff1a; 一、核心策略解析 noeviction (默認策略) 機制&#xff1a;內存滿時拒絕新寫入操作&#xff0c;返回錯誤優勢&#xff1a;絕對數據安全場景&#xff1a;金融交易系統、醫療數據存儲 allkeys-lr…

【C/C++】自定義類型:結構體

文章目錄 前言自定義類型&#xff1a;結構體1.結構體類型的聲明1.1 結構體回顧1.1.1 結構的聲明 1.1.2 結構體變量的創建和初始化1.2 結構的特殊聲明1.3 結構的自引用 2.結構體內存對齊2.1 對?規則2.2 為什么存在內存對齊&#xff1f;2.3 修改默認對?數 3. 結構體傳參4.結構體…

PPO算法:一種先進的強化學習策略

什么是PPO算法&#xff1f; PPO&#xff08;Proximal Policy Optimization&#xff09;是一種增強學習算法&#xff0c;主要應用于解決連續控制任務。PPO算法在2017年由OpenAI提出&#xff0c;旨在解決傳統策略梯度方法在連續控制任務中面臨的挑戰。PPO算法通過引入一個近似目…

OpenCV實現數字水印的相關函數和示例代碼

OpenCV計算機視覺開發實踐&#xff1a;基于Qt C - 商品搜索 - 京東 實現數字水印的相關函數 用OpenCV來實現數字水印功能&#xff0c;需要使用一些位操作函數&#xff0c;我們需要先了解一下這些函數。 1. bitwise_and函數 bitwise_and函數是OpenCV中的位運算函數之一&…

基于Python的計算機科學研究話題管理系統的設計與實現 - 爬蟲

標題:基于Python的計算機科學研究話題管理系統的設計與實現 - 爬蟲 內容:1.摘要 本文聚焦于基于Python的計算機科學研究話題管理系統的爬蟲部分。背景是隨著計算機科學研究的快速發展&#xff0c;相關話題數據海量且分散&#xff0c;人工管理效率低。目的是設計并實現一個能高…

告別手動解析!借助 CodeBuddy 快速開發網頁源碼提取工具

作為一名長期從事 Web 開發的程序員&#xff0c;我們在日常工作中&#xff0c;時不時會需要查看網頁的源代碼。這么做的目的通常是為了排查前端渲染的問題、分析接口返回的數據結構&#xff0c;或者就是單純地想快速提取頁面中的某些信息&#xff0c;比如文章鏈接、圖片地址&am…

為什么要在 input() 后加 .strip()?

strip() 是 Python 字符串的一個方法&#xff0c;用于去除字符串開頭和結尾的空白字符&#xff08;包括空格、制表符 \t、換行符 \n 等&#xff09;。 為什么要在 input() 后加 .strip()&#xff1f; 用戶在輸入時&#xff0c;可能會不小心在開頭或結尾輸入空格&#xff0c;例…

【日擼 Java 300行】Day 14(棧)

目錄 Day 14&#xff1a;棧 一、棧的基本知識 二、棧的方法 1. 順序表實現棧 2. 入棧 3. 出棧 三、代碼及測試 拓展&#xff1a; 小結 Day 14&#xff1a;棧 Task&#xff1a; push 和 pop 均只能在棧頂操作.沒有循環, 時間復雜度為 O(1). 一、棧的基本知識 詳細的介…

dotnet core c#調用Linux c++導出函數

1.聲明C++導出函數 platform_export.h // // Created by dev on 5/6/25. //#ifndef PLATFORM_EXPORT_H #define PLATFORM_EXPORT_H #if defined(_WIN32)#ifdef LIB_EXPORTS#define LIB_API __declspec(dllimport)#else#define LIB_API __declspec(dllimport)#endif #else#ifde…

SparkSQL操作Mysql

前面的課程我們學習了如何從csv文件中讀入數據&#xff0c;這相當于是對csv這種類型的數據的操作。那么接下來&#xff0c;我們一起看看&#xff0c;如何寫Spark程序來操作mysql數據庫。先來給大家介紹一下我們這節課的主要學習內容&#xff1a; &#xff08;1&#xff09;安裝…

語言學中的對象語言與元語言 | 概念 / 區別 / 實例分析

注&#xff1a;英文引文&#xff0c;機翻未校。 語言學中的“對象語言”和“元語言” 劉福長 現代外語 1989年第3期&#xff08;總第45期&#xff09; 在閱讀語言學著作時&#xff0c;我們有時會遇到這樣兩個術語&#xff1a;對象語言&#xff08;object language&#xff0…

livenessProbe 和 readinessProbe 最佳實踐

在 Kubernetes 中&#xff0c;livenessProbe 和 readinessProbe 是確保應用高可用性的關鍵機制&#xff0c;但配置不當可能導致應用頻繁重啟或流量中斷。以下是配置這兩個探針的最佳實踐&#xff1a; 1. 核心區別與作用 探針類型目的失敗后果livenessProbe檢測應用是否 存活&…

集成管理工具Gitlab

GitLab 是一個功能強大的開源代碼托管和協作平臺&#xff0c;集成 GitLab 可以顯著提升團隊的開發效率。下面我將為你介紹如何集成 GitLab&#xff0c;包括安裝配置和基本使用流程。 一、GitLab 安裝與配置 GitLab 有多種安裝方式&#xff0c;推薦使用官方 Omnibus 包安裝&am…

Electron-Vue3、Electron-React、Electron-Angular打造輿情監控系統項目

Electron是一個跨平臺的桌面應用開發框架&#xff0c;可以讓我們用html css js的技術開發跨平臺桌面上可以安裝的軟件。視頻詳解: Electron教程 ElectronVue跨平臺桌面軟件開發教程-2024年更新&#xff08;大地老師&#xff09; 從Electron環境搭建開始到手把手教你調試、Elect…

08.webgl_buffergeometry_attributes_none ,three官方示例+編輯器+AI快速學習

本實例主要講解內容 這個Three.js示例展示了無屬性幾何體渲染技術&#xff0c;通過WebGL 2的gl_VertexID特性和偽隨機數生成算法&#xff0c;在著色器中動態計算頂點位置和顏色&#xff0c;而不需要在CPU端預先定義幾何體數據。 核心技術包括&#xff1a; WebGL 2的頂點ID特…

Ubuntu 22.04搭建OpenStreeMap地址解析服務(保姆級教程)

1.數據準備 1.1.全球數據 下載地址&#xff1a;https://planet.openstreetmap.org/ 1.2.特定區域的數據 下載地址&#xff1a;Geofabrik Download Server 2.安裝必要的軟件包 2.1.更新系統軟件包 sudo apt updatesudo apt upgrade 2.2.安裝所需要的軟件包 執行下面的命…

Ubuntu 22.04.5 LTS上部署Docker及相關優化

以下是在Ubuntu 22.04.5 LTS上部署Docker及相關優化的步驟&#xff1a; 安裝Docker 更新系統&#xff1a;在安裝Docker之前&#xff0c;先確保系統是最新的&#xff0c;執行以下命令&#xff1a;sudo apt update sudo apt upgrade -y安裝依賴包&#xff1a;安裝一些必要的依賴…

React -> AI組件 -> 調用Ollama模型, qwen3:1.7B非常聰明

使用 React 搭建一個現代化的聊天界面&#xff0c;支持與 Ollama 本地部署的大語言模型進行多輪對話。界面清爽、功能完整&#xff0c;支持 Markdown 渲染、代碼高亮、<think> 隱藏思考標簽、流式漸進反饋、暗黑模式適配等特性。 &#x1f9e9; 核心功能亮點 ? 模型選擇…

vue2/3 中使用 @vue-office/docx 在網頁中預覽(docx、excel、pdf)文件

1. 安裝依賴&#xff1a; #docx文檔預覽組件npm install vue-office/docx vue-demi0.14.6#excel文檔預覽組件npm install vue-office/excel vue-demi0.14.6#pdf文檔預覽組件npm install vue-office/pdf vue-demi0.14.6 vue2.6版本或以下還需要額外安裝 vue/composition-api …

【應用密碼學】實驗五 公鑰密碼2——ECC

一、實驗要求與目的 1.復習CCC基本概念&#xff0c;并根據實驗平臺提供的資料完成驗證性實驗。 2.編程練習&#xff1a;以書上例題小模數p為例編程實現ECC的基本運算規則。 二、實驗內容與步驟記錄&#xff08;只記錄關鍵步驟與結果&#xff0c;可截圖&#xff0c;但注意排版…