C#里的 var 和 dynamic 区别到底是什么,你真的搞懂了嘛
💡
原文中文,约1700字,阅读约需4分钟。
📝
内容提要
本文介绍了C#中var和dynamic关键字的区别,var在编译阶段确定类型,dynamic在运行时确定类型,二者在操作模式和性能上也有所不同。建议在有性能需求时使用var,慎用dynamic。关键词:C#、var、dynamic、类型、性能。
🎯
关键要点
-
var和dynamic都是不确定的类型,但有本质上的不同。
-
var在编译阶段确定类型,dynamic在运行时确定类型。
-
var的类型在赋值时就被确定,而dynamic的类型无法在编译时查看。
-
IL代码中,var的操作模式与dynamic明显不同,var直接推送值,而dynamic需要装箱。
-
ASM代码显示dynamic的代码复杂度高于var,性能问题明显。
-
建议在有性能需求时使用var,慎用dynamic。
-
总结:var在编译前确定类型,dynamic在运行时确定;var是简单值,dynamic是对象;var性能优于dynamic。
➡️