C#动态类Dynamic的使用

C# 动态类型(Dynamic Type)使用详解:从入门到精通 C#动态类型使用指南:从基础到高级实践 C# 4.0引入的动态类型(dynamic)为静态类型语言带来了灵活性,特别适合处理动态数据结构、简化反射操作和COM互操作等场景。本指南全面解析动态类型的使用方法: 核心概念 dynamic关键字将类型检查推迟到运行时 与object类型不同,dynamic无需显式转换 适用于处理JSON/XML、COM互操作等场景 基础用法 动态变量可存储任意类型值 支持动态调用方法和属性 可作方法参数和返回值 阅读详情

Dynamic动态类的出现让C#具有了弱语言类型的特性,编译器在编译的时候不再对类型进行检查。

工作中经常遇到下面的场景,通过请求获取到一个JSON字符串,而我们又对返回的对象类型一无所知或者仅仅想取到其中某字段的值,此时采用dynamic来进行调用非常方便。

代码示例:创建一个控制台应用程序,需要引用Newtonsoft.Json

using System;

namespace DynamicDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            string jsonStr = "{\"name\":\"zhangsan\",\"age\":20}";
            dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonStr);
            Console.WriteLine(obj.name);
            Console.WriteLine(obj.age);
            Console.ReadLine();
        }
    }
}

运行结果:

 

C#中的动态类型(Dynamic) 一、动态类型简介 .NET 4 中引入了动态类型。动态对象(dynamic)使您可以处理诸如 JSON 文档之类的结构内容,这些结构的组成可能要到运行时才能知道【该类型是一种静态类型,但类型为dynamic的对象会跳过静态类型检查。 大多数情况下,该对象就像具有类型object一样。 在编译时,将假定类型化为dynamic的元素支持任何操作。 因此,不必考虑对象是从 COM API、从动态语言(例如 IronPython)、从 HTML 文档对象模型 (DOM)、从反射还是从程序中... 阅读详情

相关推荐

VS Code+ESP-IDF开发避坑指南:头文件标红报错的5种解决方法(附CMakeLists.txt配置)

本文详细解析了在VS Code中使用ESP-IDF开发ESP32时头文件标红报错的5种解决方法,包括环境配置检查、CMakeLists.txt规范配置、路径解析策略、缓存清理技巧和高级调试手段。特别提供了CMakeLists.txt的实战配置示例,帮助开发者彻底解决头文件路径问题,提升开发效率。

weixin_33670786的博客 559

【.net famwork基础之】dynamic与DeserializeObject

Dictionary<string, string> dic = new Dictionary<string, string> { { "ml_keywords", EncryptUtils.MD5Encrypt(DateTime.Now.ToString("yyyyMMddHH") + token).ToLower()}, { "action", "makeToken"...

qq_41566366的博客 585

详解岭回归与L2正则化

最小二乘法存在不可逆和病态问题,导致解析解不可计算或不稳定,岭回归是一种有效的解决方法,以损失无偏性来换取稳定解, 本文介绍详细介绍了岭回归的基本原理,并从L2正则化角度来进行了解释。

Luoyingfeng的博客 1万+

.NET(C#) Json字符串反序列化成dynamic类型对象的方法代码

本文主要介绍.NET(C#)中,将Json字符串反序列化(Deserialize)时,反序列化(Deserialize)成动态类型(dynamic类型)对象的五种方法和代码。

weixin_52026996的博客 3994

数字IC物理验证实战 | 从Calibre LVS报告到Innovus定位的Debug全链路解析

本文详细解析了数字IC物理验证中Calibre LVS报告的Debug全流程,从INCORRECT NETS错误的初探到Innovus定位技巧,提供了实战案例和高效工具的使用方法。重点介绍了Calibre高亮功能、Innovus验证命令以及前后端工具联动的关键策略,帮助工程师快速定位和解决LVS问题,提升物理验证效率。

weixin_30919429的博客 127

Arch Linux双系统安装避坑指南:从Windows分区到桌面环境全流程

本文提供了一份详尽的Arch Linux与Windows双系统安装避坑指南。内容涵盖从安装前的UEFI环境确认、BitLocker处理、分区规划,到Live环境进入、基础系统安装、GRUB引导配置,再到显卡驱动安装、KDE/GNOME桌面环境部署及中文化设置的全流程。重点解决了双系统安装中的核心痛点,帮助用户在不破坏现有Windows系统的前提下,顺利完成Arch Linux的安装。

nice1的博客 535

C# dynamic 动态创建 json

using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Dynamic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AnuoDog.Csharp { class StudyJsonNET { static void Main(string[] args) .

高建设的专栏 1163

72、海洋地理信息系统:电子海图的全面解析

本文全面解析了海洋地理信息系统中的电子海图技术,从AIS数据的应用、电子海图数据的存储与显示,到电子导航的发展趋势和S-100通用水文数据模型的推广,系统地阐述了电子海图在现代航海中的核心作用及其未来发展方向。

hhh00的博客 251

C#中的动态类型dynamic

1,动态类型dynamic最常见啊的使用就是在将json字符串接受下来,然后像操作是js操作json一样去处理数据,很轻盈的!废话不多说,上代码! var info = "{\"Account\":\"张三\",\"Pwd\":\"12323\"}"; //json字符串 var infoDynamic = JsonConvert.DeserializeObject<dynamic&g......

积跬步,至千里 7884

华为OD机试真题 新系统 - 计算数列位置N的值 (Java/Py/C/C++/Js/Go)

本文整理华为 OD 机试新系统机考真题库,涵盖高频考点精析与完整题目内容,提供 C 语言、Java、C++、Python、Go、JavaScript 多语言源码实现,搭配详细解题思路讲解,并支持在线 OJ 刷题练习,助力高效备考华为 OD 机试新系统。

算法大师! 2005

Python爬虫教程:微博热点话题抓取与社交媒体分析

微博是中国最大的社交媒体平台之一,拥有海量的用户和丰富的讨论话题。通过爬取微博的热门话题和讨论内容,我们可以深入分析用户的兴趣、舆论走势、社会情绪等。通过爬取微博的热点话题和讨论内容,我们可以获得关于当前热门话题的宝贵数据,并基于这些数据进行多种社交媒体分析。本文将通过Python爬虫技术,详细介绍如何抓取微博上的热门话题、话题讨论内容,并进行社交媒体分析。希望本文为你提供了一个全面的微博数据抓取与分析的指南,帮助你在社交媒体数据分析的道路上迈出坚实的第一步。微博上的一些页面内容是静态的,可以直接通过。

2201_76125261的博客 589

C#中Dynamic与Json字符串的互相转换

调用: ynamic d = new ExpandoObject(); d.Name = "Tom"; string json = JsonDynamic.ToJson(d);//{"Name":"Tom"} dynamic d2 = JsonDynamic.ToDynamic(json); 注:序列化为Json时仅支持ExpandoOjbect类型,因为ExpandoOjbect派生自IDi

尚晶文的博客 1万+

RAG测评实战代码

本文主要介绍了RAG测评实战代码,希望对使用RAG的同学们有所帮助。 文章目录 1. 前言 2. 实战代码 2.1 实战代码一 2.2 实战代码二

herosunly的博客 1万+

C# 匿名对象(匿名类型)、var、动态类型 dynamic

本文是要写的下篇《C#反射及优化用法》的前奏,不能算是下一篇文章的基础的基础吧,有兴趣的朋友请关注一下我的blog,这也有助于提高本人写作的动力。 随着C#的发展,该语言内容不断丰富,开发变得更加方便快捷,C# 的锋利尽显无疑。C# 语言从诞生起就是强类型语言,这一性质到今天不曾改变,我想以后也不会变。既然是强类型语言,那编写任一程序均要求满足下面的基本条件: 1、变量声明必须指明其类型 2、变量类型明确后,其类型在Runtime亦不能改变 代码如下: public class S

dreamgis的专栏 1570

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C# 使用Assembly程序集和dynamic动态类型实现动态类实例创建和成员属性值装配

1 通用方法 1.1NewAssembly() 创建动态类程序集。 //创建动态类程序集 public static Assembly NewAssembly(List<string> propertyList){ //创建编译器实例 CSharpCodeProvider provider = new CSharpCodeProvider(); //设置编译参数 CompilerParameters paras = new CompilerParam.

旭东怪的博客 1353

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C#笔记---动态类(Dynamic)应用动态添加实体属性

背景:在Coding中有时候会遇到一些需要解析的数据,可是数据的字段数量和名称未统一,我们没法定义实体类来对应。那么我们就会想到通过C#的dynamic动态类来实现,如果大家注意的话一些ORM框架里面貌似都有用到dynamic来实现一部分功能。 一.Dynamic的基本应用 1.1 通过.PropertyName来添加属性,和JavaScript的对象差不多.不过对于我们所要解析的数据,我们事先也许根本不知道属性名称,所以用这种方法意义不大. dyna...

雨中深巷的油纸伞 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

dynamic设计动态类 (C# 4.0)

dynamic介绍: 前言: 最近公司某项目中类型定义不能在编译期间确定,表结构为动态可变类型。有参考C#4.0最新特性,故成此作。 1. dynamic和var dynamic是C#4.0新增关键字,和以前动态确定类型的关键字var还是有所不同,以下是区别

学习备忘录 6763

C# 动态类型 Dynamic

在 C# 中,dynamic 关键字是一种重要的类型,允许开发者绕过编译时的类型检查,以便在运行时动态决定类型。这种特性提供了更大的灵活性,尤其在处理动态数据、COM 组件、动态语言接口(DLR)等场合非常有用。dynamic 类型允许变量在运行时被赋予任何数据类型。与 object 类型不同,dynamic 类型的变量在编译时不进行类型检查,而是在运行时解析,从而提供了更大的灵活性。使用 dynamic,你可以调用对象的方法和属性,而不需要在编译时确定它们是否存在。

2401_83367969的博客 4739

c# dynamic动态类型和匿名类

dynamic类型简单示例 dynamic expando = new System.Dynamic.ExpandoObject(); //动态类型字段 可读可写 expando.Id = 1; expando.Name = "Test"; string json = Utils.ConvertJson.JsonEncode(expando); //输出{Id:1,Name...

weixin_30737433的博客 523

5步解锁C#动态类型!dynamic vs object:谁才是类型变形金刚?

你的代码还在和“类型检查”较劲吗?——这不是“代码诅咒”,是你的动态类型在“躺平”!今天就教你在C#中打造“类型变形金刚”,从基础到实战全搞定!(掏出小本本,准备抄代码!你已经掌握了C#动态类型的“五步超能力”!从基础到实战,每一步都像给代码装上了“变形金刚”!🔥关注墨瑾轩,带你探索编程的奥秘!🔥超萌技术攻略,轻松晋级编程高手🚀。🔥技术宝库已备好,就等你来挖掘🚀。🔥订阅墨瑾轩,智趣学习不孤单🚀。🔥即刻启航,编程之旅更有趣🚀。:编译不管,运行时才确定!:动态类型才是偷懒神器!:严格检查,但死

java专栏 598

c#动态类型Dynamic

需引用System.Dynamic命名空间 来源:http://www.cnblogs.com/ryanding/archive/2010/12/09/1900106.html dynamic Customer = new ExpandoObject(); Customer.Name = "Lucy"; Customer.Age = 20; Customer.Female...

dianguanqu8609的博客 213

探究C# dynamic动态类型本质

本周在做接口动态传参的时候思考了个问题:如何把一个json字符串,转成C#动态类?比如由生成解决这个问题前,我们先来了解一下dynamic动态类型。

jevonsflash的专栏 1905

C#中动态类型dynamic用法浅析

介绍C#中动态类型dynamic的用法

gc_2299的博客 4955
上一篇: WPF实现ScrollViewer平滑滚动效果
下一篇: WPF根据窗口内容自动调整窗口大小
RunnerDNA
博客等级 码龄14年 575粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RunnerDNA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值