动态对象智能感知

ser*_*0ne 3 c# intellisense dynamic object visual-studio

如果动态在编译时解析为对象,并且所有 .NET 类型都扩展对象,那么为什么动态在 In​​telliSense 方面不像对象那样工作?每当我使用动态时,我都会收到一条消息:“动态表达式。这将在运行时解决”。当然它也应该显示对象成员?

Nik*_*wal 5

智能感知不适用于动态类型。它在运行时解决。动态类型适用于静态类型和匿名类型。

如果智能感知能够发挥作用,那么它就违背了动态性的初衷。

我认为你应该阅读 Jon Skeet 的回答object vs dynamic 这里

  • *“如果智能感知能起作用,它就会违背动态性的初衷。”*——有趣的是,它确实适用于 Javascript,而且 Javascript 中的所有内容都是动态的。IntelliSense 为自动完成提供的属性和方法是由实际_执行_代码决定的,我相信这也可以在 C# 的情况下完成。 (5认同)
  • 同意@JohnWhite的观点,我们可以为js和打字稿提供智能感知。从这个意义上说,智能感知只是一个暗示,它很可能是我们在 jsdoc 中定义的结构。和C#动态对象应该有类似的东西 (2认同)