新的“dynamic”C# 4.0 关键字是否弃用了“var”关键字?

2024-01-08

当 C# 4.0 出现时,我们有了如此处描述的动态关键字excellent presentation by Anders Hejlsberg http://channel9.msdn.com/pdc2008/TL16/,(C#的发展速度比我能跟上的要快。.我没有太多时间熟悉var关键字)

我还需要 var 关键字吗?有什么是 var 可以做的,而 Dynamic 不能做的吗?

var x = SomeFunctionThatIKnowReturnsSomeKindOfList();
// do something with x

dynamic x = SomeFunctionThatIKnowReturnsSomeKindOfList();
// do something with x

不,他们非常不同。

var意味着“在编译时推断变量的类型” - 但它仍然完全静态绑定。

dynamic意思是“假设我可以用这个变量做任何我想做的事情” - 即编译器不知道哪些操作可用,并且 DLR 将计算出调用的内容really表示执行时。

我期望使用dynamic很少 - 只有当我真正想要动态行为时:

  • var让你在编译时捕获拼写错误等
  • 静态绑定代码总是比动态绑定代码运行得更快(即使差异变得相当小)
  • 静态绑定代码提供了更多编译时支持,而不仅仅是错误:您可以找到调用层次结构,重构会更好,智能感知可用等
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

新的“dynamic”C# 4.0 关键字是否弃用了“var”关键字? 的相关文章

随机推荐

  • 移动 std::vector 时是否需要保留容量?

    考虑以下代码 std vector vec vec reserve 500 size t cap vec capacity std vector newVec std move vec assert cap newVec capacity
  • TextField 成为FirstResponder Tab 键(键盘)操作的问题

    我在 XIB 中有一个视图 其中使用了几个文本字段 假设视图加载到窗口中后 第一个文本字段将成为第一响应者 如果我按机器键盘上的 Tab 键导航到下一个文本字段 除了立即文本字段之外 所有其他文本字段也将成为第一响应者 并且为所有文本字段调
  • 采用可选块参数的子例程

    与接受的原型相关的注意事项尽管如此 以下两个设计的子程序是否可以存在于同一包中 即提供一个可选的块参数 例如sort does sub myprint for print n sub myprint my block shift for p
  • 如何最好地合并多个字典中的值?

    我创建了一个函数 它接受字典的多个参数 并返回一个连接的字典 我在网上研究了一段时间关于连接合并字典的内容并测试了有趣的字典 它们都会导致更新值 或覆盖它们 我的用例是传入字典 其中每个键都有一个值 并且想要一个具有相同或不同键的字典 以及
  • 使用 Android 读取 NXP ICODE SLI-L 标签

    我正在尝试在我的 Android 应用程序中读取 NXP 开发的 NFC 标签 可以使用 Android 读取标签 恩智浦应用程序 https play google com store apps details id com nxp ta
  • 如何将共生矩阵转换为稀疏矩阵

    我开始处理稀疏矩阵 所以我对这个主题并不是很精通 我的问题是 我有一个来自单词列表的简单共现矩阵 只是一个二维共现矩阵 逐字计算一个单词在同一上下文中出现的次数 由于语料库不是那么大 因此矩阵非常稀疏 我想将其转换为稀疏矩阵以便能够更好地处
  • 如何将 cordova-crosswalk 应用程序的 x86 和 ARM APK 发布到 Play 商店?

    我的应用程序是使用 Cordova 和 Crosswalk 开发 发布的 Crosswalk 生成一个适用于 ARM cpu 的 apk 和另一个适用于 x86 cpu 的 apk 目前 当我将 ARM apk 上传到 Play 商店 然后
  • SSRS 将多个数据集合并为一张图

    我一直在网上寻找一种在 SSRS 2008 R2 中完全组合数据集的方法 基本上 我需要创建一个由多个不同数据集 所有数据集具有相同的列 如下所示 组成的单个表和图表 这些数据集是从多个 SQL 服务器检索的 防止我将它们组合在单个查询中
  • 仅在 Python 中将 datetime 对象转换为日期字符串

    我看到很多关于将日期字符串转换为datetimePython 中的对象 但我想走另一条路 我有 datetime datetime 2012 2 23 0 0 我想将它转换为字符串 2 23 2012 您可以使用strftime http
  • Xamarin iOS 防止特定视图控制器旋转

    需要防止特定视图控制器上的屏幕旋转我在下面尝试过 public override bool ShouldAutorotateToInterfaceOrientation UIInterfaceOrientation toInterfaceO
  • Select2:动态隐藏某些选项

    基本上我正在寻找的是能够从所选项目的下拉列表中隐藏选项的能力 因此 从技术上讲 它们仍然是选项 但您只是无法单击它们 因为它们是隐藏的 我浏览了文档并发现了与禁用相关的内容 不幸的是我非常特别想要隐藏项目的能力 有人对如何实现这一目标有建议
  • 继承构造函数

    为什么这段代码 class A public explicit A int x class B public A int main void B b new B 5 delete b 导致这些错误 main cpp In function
  • Java 制作一个单独的注释,结合其他注释

    使用 Play Framework 2 2 制作 RESTful API 在我正在使用的模型中 我只想输出 Json with Jackson 相关对象的 Id 而不是整个对象 我找到了如何做到这一点 如下所示 JsonIdentityIn
  • 使用 FileProvider 在 Android N 上打开下载的文件

    由于 FileProvider 的更改 我必须修复适用于 Android N 的应用程序 我基本上已经阅读了关于这个主题的所有内容 但没有找到适合我的解决方案 这是我们之前的代码 它开始从我们的应用程序下载 并将它们存储在Download文
  • Dart/Flutter 中什么时候应该使用分号?

    我是 Dart Flutter 的初学者并尝试阅读this https dart dev guides language language tour但我仍然不明白什么时候使用分号 为什么我们不在小部件的每个括号末尾插入分号 Dart中有两种
  • 我可以查出坐标是否在城市内吗?

    假设我有一个 LatLng 对象 有什么方法可以检查它是否代表城市内的可能位置 如何获得城市的边界 我正在使用谷歌地图V3 您尝试过反向地理编码吗 http code google com apis maps documentation j
  • 程序收到信号:“EXC_BAD_ACCESS”

    我有一个字符串变量 它存储日期选择器中的日期 但是当我在其他函数中使用它的值时 我收到类似程序收到信号的错误 EXC BAD ACCESS 注意 变量是全局定义的 code void changedDate UIDatePicker pic
  • 从相机预览中的触摸事件中检索准确的 RGB 值

    我一直在开发一个 Android 应用程序 它只需要检索并在相机预览上显示触摸事件的坐标和 RGB 值 我是这种编程语言的初学者 我只是想尝试一下 但应用程序在触摸事件期间不断崩溃 这是我在 Android 中尝试过的代码 When cop
  • 在 PyQt 中显示其他语言字符

    PyQt4 有没有办法显示其他语言字符 如果有 我应该采取什么方法 方向 提前致谢 Qt 使用 Unicode 并且应该能够以您拥有合适字体的任何语言显示 Unicode 文本 例如 Roberto Alesina 的简单 Hello Wo
  • 新的“dynamic”C# 4.0 关键字是否弃用了“var”关键字?

    当 C 4 0 出现时 我们有了如此处描述的动态关键字excellent presentation by Anders Hejlsberg http channel9 msdn com pdc2008 TL16 C 的发展速度比我能跟上的要