C#中对象类型转换

devtools/2024/10/21 14:23:27/

对象类型转换通常有两种情况:

  1. 一种是当需要转化对象的类型属于转换目标类型或者转换目标类型的派生类型
  2. 两个对象没有关系,但属性和方法一样。

1. 针对第一种情况可以使用as进行对象转换

public class StudentInfo{public string Name;public int Age;public string Course;
}public class TeacherInfo{public string Name;public int Age;
}public enum Type{Student;Teacher;
}
public void Test(Type type,object data){switch(type){case Type.Student:StudentInfo studentInfo = data as StudentInfo;break;case Type.Teacher:TeacherInfo teacherInfo = data as TeacherInfo;break;}
}

2. 针对第二种情况,可以使用序列化反序列化方法

void Main()
{TeacherInfo teacher = new TeacherInfo();teacher.name = "Jane";teacher.age = 20;StudentInfo studentInfo = ConvertObject<StudentInfo>(teacher);studentInfo.name.Dump();
}public class StudentInfo
{public string name;public int age;
}public class TeacherInfo
{public string name;public int age;
}public static T ConvertObject<T>(object asObject) where T : new()
{//此方法将object对象转换为json字符var json = Newtonsoft.Json.JsonConvert.SerializeObject(asObject);//再将json字符转换为实体对象var t = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(json);return t;
}


http://www.ppmy.cn/devtools/19115.html

相关文章

科技渔业,智慧守护:4G+北斗太阳能定位终端准确定位,防拆卸报警,夯实渔业管理水平

如何高效地管理渔船&#xff0c;有效监控禁渔区域&#xff0c;4G北斗太阳能定位终端应运而生&#xff0c;成为渔业管理的重要应用工具。 我国作为全球渔业的重要国家&#xff0c;渔业一直是沿海地区传统的支柱产业&#xff0c;对经济的繁荣和民生的稳定起着至关重要的作用。因…

C++性能优化实践 二

C性能优化实践 二 文章目录 一、返回对象1.1、返回值优化 二、异常之得失2.1、避免不必要的 try...catch 三、错误码机制3.1、集成错误码一 标识错误码3.2、集成错误码二 错误类别和输出3.3、集成错误码三 错误转换成标准库错误码3.4、集成错误码四 构造 error_code 书接上回, …

Jackson 2.x 系列【31】Spring Boot 集成之字典回写

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 场景描述2. 案例演示2.1 修改枚举2.2 定义注解…

图像处理之Retinex算法(C++)

图像处理之Retinex算法&#xff08;C&#xff09; 文章目录 图像处理之Retinex算法&#xff08;C&#xff09;前言一、单尺度Retinex&#xff08;SSR&#xff09;1.原理2.代码实现3.结果展示 二、多尺度Retinex&#xff08;MSR&#xff09;1.原理2.代码实现3.结果展示 三、带色…

JS----前端将列表数据转树型数据

前端将列表数据转树型数据 场景&#xff1a;后端返回列表数据&#xff0c;由前端根据业务需求完成树型数据转换&#xff0c; 常用于侧边导航菜单&#xff0c;下拉树型数据项等 export function listToTree(data: []) {var map: any {},tree: any []data.forEach((item: any…

webpack中mode、NODE_ENV、DefinePlugin、cross-env的使用

本文讲的全部知识点&#xff0c;都是和webpack相关的。如果你之前有疑问&#xff0c;那本文一定能帮你搞清楚。 问题来源一般是类似下面代码&#xff08;webpack.json中&#xff09;&#xff1a; "scripts": {"dev": "cross-env NODE_ENVdevelopmen…

C语言:插入排序

插入排序 1.解释2.步骤3.举例分析示例结果分析 1.解释 插入排序是一种简单直观的排序算法&#xff0c;它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上&#xff0c;通常采…

TCP相关问题总结

文章目录 TCP连接建立过程1. TCP三次握手2. TCP四次挥手3. TCP为什么是三次握手4. TCP为什么是四次挥手 TCP流量控制TCP拥塞控制1. 为什么需要拥塞控制2. 控制手段 TCP连接建立过程中出现丢包 TCP连接建立过程 1. TCP三次握手 首先client端发出连接请求&#xff0c;并且请求同…