C#如何使用dynamic关键字 C#动态类型dynamic用法

admin 百科 14
dynamic是C#中将类型检查推迟到运行时的特殊类型,适用于COM交互、反射调用、动态JSON处理及DSL构建等场景,但会丢失编译检查与IDE支持。

C#如何使用dynamic关键字 C#动态类型dynamic用法-第1张图片-佛山资讯网

dynamic 是 C# 中用于绕过编译时类型检查的特殊类型,它把类型解析推迟到运行时。用它不是为了“替代”静态类型,而是为了解决某些特定场景下类型不确定、互操作复杂或代码过于冗长的问题。

什么时候该用 dynamic?

常见适用场景包括:

  • 与 COM 对象交互(比如 Excel、Word 自动化)
  • 调用反射结果时避免写一堆 InvokeMemberGetProperty
  • 处理 JSON 或其他动态结构(配合 ExpandoObject 或第三方库如 Newtonsoft.Json 的 JObject
  • 构建高度泛化的 DSL 或脚本桥接层

⚠️ 注意:它不等于“任意类型”,也不提升性能——反而会丢失编译器检查、IDE 智能提示和重构支持,容易在运行时报错。

basic 用法:声明和赋值

声明一个 dynamic 变量,可以赋任何值,后续调用成员时不会在编译时报错:

dynamic obj = "hello";
obj.Length; // ✅ 编译通过,运行时调用 string.Length  
obj.ToUpper(); // ✅  
<p>obj = 123;
obj.ToString(); // ✅ 运行时调用 int.ToString()<br />
obj.Length; // ❌ 运行时报错:'int' 不包含 'Length'

登录后复制

编译器不验证成员是否存在,一切交给运行时的 DLR(Dynamic Language Runtime)处理。

标签: word excel js json 区别 c# json处理 asic

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~