使用泛型加载保存数据

文章速览

  • 泛型
    • 泛型概述
    • 定义
    • 优点
  • 实例
    • 加载数据
    • 保存数据

一个赞,专属于你的足迹!

泛型

泛型概述

泛型(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.mzph.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;但注意排版…