当前位置: 首页 > news >正文

c#反射-获取属性和字段的值

演示类

示例类具有一个私有实例字段,一个实例属性,一个实例字段,一个静态私有属性。

class Fight
{private int hp;public int Hp{get => hp; set{if (value > 0){ hp += value; }else if (-value > Def){ hp += value - Def; }}}public int Atk;private static int Def { get; set; }
}

获取字段的值

由于获取的字段是实例字段,因此需要传入一个实例来获取。但如果是静态成员,这个参数可以是null。

Type type = typeof(Fight);
FieldInfo field = type.GetField("hp", BindingFlags.NonPublic | BindingFlags.Instance);Fight fight = new Fight();
object hp = field.GetValue(fight);
Console.WriteLine(hp);

获取到的值确实就是那个类当前情况的值。
在那个类变化后,再次获取到他的值,能获取到变化后的值。
反射相关的api用的参数和返回值类型都是object,但他就是声明类型的值,可以强转。

fight.Hp = 60;
int hp2= (int)field.GetValue(fight);
Console.WriteLine(hp);

设置字段的值

设置字段的值使用setValue方法。通用你需要传入有这个字段的实例。
第一个参数是实例,第二个参数是你用来赋值的值。
他的参数只要求是object,但你要保证他是可以赋值的。
(类型匹配,且字段不是只读。但如果是你程序集的东西,可以无视访问修饰符)

field.SetValue(field, 999);
Console.WriteLine(fight.Hp);

获取和设置属性的值

和上述差不多。但属性需要保证访问器是正确的。
例如存在get/set访问器,类型正确,且不是抽象的(抽象类中的属性可以是抽象的,这种访问器没有实现)。

PropertyInfo property = type.GetProperty("Def", BindingFlags.Static | BindingFlags.NonPublic);
int i2 = (int)property.GetValue(null);
Console.WriteLine(i2);property.SetValue(null,999);
Console.WriteLine(property.GetValue(null));

相关文章:

c#反射-获取属性和字段的值

演示类 示例类具有一个私有实例字段,一个实例属性,一个实例字段,一个静态私有属性。 class Fight {private int hp;public int Hp{get > hp; set{if (value > 0){ hp value; }else if (-value > Def){ hp value - Def; }}}publi…...

前后端分离-小项目-1前端布局

技术栈前后端分离开发,前端主体框架Vue3后端基础框架Spring-Boot1.前端技术栈:Vue3AxiosElementPlus2.后端技术栈:Spring BootMyBatis Plus3.数据库-MySQL4.项目的依赖管理-Maven5.分页-MyBatis Plus的分页插件环境搭建安装Node.js LTSnode.j…...

基于jsp的网络电子相册的设计与实现

技术:Java、JSP等摘要:随着科学技术的不断进步,云技术以及大数据的不断完善,越来越多的网络忠实用户告别了冲洗相片的时代,他们更喜欢将相片上传至网络,这样就省去了携带和查找的麻烦,随时随地只…...

Python快速上手系列--类--详解篇

本章是自动化测试的真正开始,因为在后续的过程中,你会接触到unittest框架,pytest框架,而不仅仅只是写一个函数selenium脚本这么简单了。1、创建类1.1、了解类我们首先了解一下,为什么要使用类,类可以拿来干…...

Dubbo基本原理和用法讲解

Dubbo基本原理和用法讲解 序言:学习一项新技术,一般从是什么、为什么、怎么用三个方面进行学习。本篇文章也不例外,笔者将从Dubbo是什么?、为什么会产生Dubbo技术?、如何在项目中使用Dubbo技术。最后,笔者…...

TCP详解及面试相关问题

文章目录1、计算机模型2、客户端和服务端通信——TCP协议(1)socket套接字(2)TCP三次握手——创建socket(3)连接的本质(4)TCP四次挥手——释放socket资源(5)TC…...

LVGL V9.0基于VS2022仿真搭建

完整Demo,lvgl,lvgl_drivers相关资料下载 链接:https://pan.baidu.com/s/1DNJeHdoaPyfe1BsLb9wjRg 提取码:wov7 其它资料下载 链接:https://pan.baidu.com/s/1nV9jojPEPWSWZdYhaCZWTA 提取码:91j8 下载资料后解压文…...

多线程面试题开胃菜2(5道)

一.一个线程的生命周期有哪几种状态?它们之间如何流转的?NEW:毫无疑问表示的是刚创建的线程,还没有开始启动。RUNNABLE: 表示线程已经触发 start()方式调用,线程正式启动,线程处于运行中状态。BLOCKED&…...

第三次作业

一、单表查询素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等CREATE TABLE worker (部门号 int(11) NOT NULL,职工号 int(11) NOT NULL,工作时间 date NOT NULL,工资 float(8,2) NOT NULL,政治面貌 varchar(10) N…...

基础算法(直接插入,希尔排序,快排,归并,折半查找)

/*直接插入:把待排序序列分为有无序区和和无序区,使用无序区的数据一次插入倒有序区中,最终结果尾有序序列 1> 把数据分为有序区和无序区,默认第一个元素在有序区,剩下在无序区 2> 外层循环,循环无…...

电子学会2022年12月青少年软件编程(图形化)等级考试试卷(一级)答案解析

目录 一、单选题(共25题,共50分) 二、判断题(共10题,共20分) 三、编程题(共2题,共30分) 青少年软件编程(图形化)等级考试试卷(一级) 一、单选题(共25题,共50分) 1. 小明想在开始…...

基于JAVA的超级玛丽设计与实现

技术:Java等摘要:随着计算机技术及网络技术的不断发展,电子游戏越来越普及。经典游戏“超级玛丽”因其本身所具有的娱乐性与教育意义而被人们广泛接受,在广大的青少年玩家中享有极高的知名度。Java语言作为一种完全面向对象的程序…...

硬件工程师入门基础知识(一)基础元器件认识(二)

硬件工程师入门基础知识 (一)基础元器件认识(二) tips:学习资料和数据来自《硬件工程师炼成之路》、百度百科、网上资料。 1.二极管 2.三极管 3.MOS管 4.IGBT 5.晶振 1.二极管 肖特基二极管和硅二极管的比较&#…...

Python-项目实战--贪吃蛇小游戏-游戏框架搭建(2)

1.游戏框架搭建介绍pygame开发图像界面游戏的几个要素,并且把贪吃蛇游戏的整体框架搭建完成本节知识点包括:pygame的初始化和退出游戏主窗口游戏循环和游戏时钟主窗口背景颜色绘制文本pygame的坐标系游戏事件监听绘制图形定时器事件1.1pygame的初始化和退…...

JVM基础

JVM基础 1.JVM的位置 JVM是运行在操作系统之上的,它与硬件没有直接的交互 2.JVM体系结构图 这个区域一定不会有垃圾回收 所谓JVM的调优,其实就是在调这个区域,而且99%情况下都在调堆 ! 3.类加载器ClassLoader 先来看看一个类加载到 JVM 的…...

Android 内存优化(基础轮)必看~

本次分享主要分为五个部分内容,第一部分内容是 5W2H 分析内存优化,第二部分内容是内存管理机制,第三部分内容是内存优化 SOP,第四部分内容是 内存优化指导原则, 最后一部分内容是总结与展望。 如果学完内存优化的基础论…...

STM32单片机GSM短信自动存取快递柜

实践制作DIY- GC0104-自动存取快递柜 一、功能说明: 基于STM32单片机设计-自动存取快递柜 二、功能介绍: STM32F103C系列最小系统板0.96寸OLED显示器DY-SV17F串口语音播报模块4*4矩阵键盘GSM短信模块4路舵机(模拟4个柜子) ***…...

力扣(LeetCode)410. 分割数组的最大值(2023.02.12)

给定一个非负整数数组 nums 和一个整数 m ,你需要将这个数组分成 m 个非空的连续子数组。 设计一个算法使得这 m 个子数组各自和的最大值最小。 示例 1: 输入:nums [7,2,5,10,8], m 2 输出:18 解释: 一共有四种方法…...

管理还原数据

还原数据还原数据是:• 原始的、修改之前的数据副本• 针对更改数据的每个事务处理而捕获• 至少保留到事务处理结束• 用于支持:– 回退操作– 读取一致性查询– Oracle 闪回查询、Oracle 闪回事务处理和 Oracle 闪回表– 从失败的事务处理中进行恢复存…...

c的关键字有那些

编程语言中的关键字 C语言简洁、紧凑,使用方便、灵活。ANSI C标准C语言共有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以像汇编语言一样对位、字节和…...

Mysql 06: 表与字段别名全解——让 SQL 更简洁、可读性拉满

在 MySQL 中,为表和字段取别名(Alias) 是 SQL 开发的基础必备技能,既能大幅简化 SQL 代码、避免字段名冲突,又能让查询结果更易读,是多表连接、复杂查询的核心优化技巧。本文围绕「表别名」和「字段别名」两…...

MOVA割草机器人:开启自主决策新时代

随着AI感知技术在户外场景加速落地,MOVA率先推出AI双目视觉割草机器人ViAX系列,实现多传感器融合,让割草机迈入“自主决策时代”,全球销量快速增长。技术跃迁:从自动到自主 AI感知技术向户外场景渗透,割草机…...

LangChain消息系统深度解析:从OpenAI格式到Claude 3.5,如何设计一个健壮的对话状态机?

LangChain消息系统架构设计:构建企业级对话状态机的工程实践 在当今AI应用开发领域,对话系统的复杂度和功能性需求正呈指数级增长。从简单的单轮问答到需要维护长期记忆、处理多模态输入、执行工具调用的复杂Agent系统,开发者面临的挑战已远超…...

手机号码智能定位引擎:从数据解析到地理可视化的全链路解决方案

手机号码智能定位引擎:从数据解析到地理可视化的全链路解决方案 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.co…...

Featurize深度学习训练全流程解析:从数据上传到模型输出

1. 数据上传:从本地到云端的高效迁移 第一次使用Featurize上传数据集时,我习惯性地点开了网页端的上传按钮,结果发现系统自动启用了分片上传机制。这个细节让我印象深刻——当我的10GB图像数据集在上传过程中网络波动时,竟然不需要…...

一次慢改表引发的线上死锁事故复盘

一次慢改表引发的线上死锁事故复盘 一、事故背景 在一次常规的数据库表结构变更过程中,对某核心业务表执行了慢改表操作(使用 pt-online-schema-change)。操作开始后,短时间内触发报警: 部分接口响应时间显著上升出现请…...

利用快马平台AI能力,十分钟快速生成qoderwork官网原型

最近在尝试为AI代码生成工具qoderwork设计官网原型时,发现用传统方式从零开始写代码特别耗时。正好体验了InsCode(快马)平台的AI生成功能,十分钟就做出了可交互的响应式单页原型,分享下这个高效的工作流: 明确核心模块 官网原型需…...

Clawdbot 是如何实现永久记忆的?

下文是如何构建的在深入探讨记忆之前,我们先来理解模型在每次请求时能看到什么:[0] 系统提示词(静态指令 条件指令) [1] 项目上下文(引导文件:AGENTS.md、SOUL.md 等) [2] 对话历史&#xff08…...

万象视界灵坛部署案例:边缘设备(Jetson Orin)轻量化CLIP推理部署

万象视界灵坛部署案例:边缘设备(Jetson Orin)轻量化CLIP推理部署 1. 项目概述 万象视界灵坛(Omni-Vision Sanctuary)是一款基于OpenAI CLIP模型的高级多模态智能感知平台。该平台通过创新的像素风格界面设计&#xf…...

三菱FX2N与士林变频器MODBUS通讯实战指南

1. 硬件连接:从零搭建通讯桥梁 第一次接触三菱FX2N和士林变频器的MODBUS通讯时,最让我头疼的就是硬件接线。别看只是几根线,接错了轻则通讯失败,重则烧毁端口。这里分享几个实操中容易踩的坑: 变频器端接线要点&#x…...