【问题标题】:Silverlight - Is there a performance difference between C# and VB.net Event Handlers?Silverlight - C# 和 VB.net 事件处理程序之间是否存在性能差异?
【发布时间】:2011-07-01 22:57:40
【问题描述】:

作为 .NET 和 Silverlight 的新手,我注意到 Silverlight 的许多教程(Tim Heuers 博客、Silverlight TV 等)都是用 C# 编写的。我知道 VB 和 C# 之间的一般区别通常是偏好。

然而,我注意到的主要区别之一是 C# 和 VB.NET 处理事件的方式。这只是语法上的差异,还是其中一个优化可以更好地处理事件?例如,它们都被编译成相同的中间语言,但生成的代码是否相同?鉴于 Silverlight 严重依赖这一点,我认为这可能值得考虑。

考虑到这个论坛的专业知识,我想知道是否有人对此进行过研究或性能测试。

【问题讨论】:

  • 您是在问处理程序的调用方式是否有所不同?

标签: c# .net vb.net silverlight


【解决方案1】:

生成的代码可能与指令不同,但总体效果是相同的。您不应该在该区域看到性能差异。

VB.NET 有两种事件语法 - AddHandler,与 C# 的 += 相同,Handles,只是构造函数中 AddHandler 的语法糖。

【讨论】:

  • 谢谢,这确实是我感兴趣的。我不确定 IL 结果有多相同,只是它们是兼容的。
  • Handles 关键字实际上为属性设置器创建代码,该设置器将事件处理程序添加到对象/将其从前一个对象中删除。
【解决方案2】:

它们都被编译为 IL(或者在本例中为 Silverlight 字节码)并且应该执行完全相同的操作。任何差异都应该只是语法上的。

【讨论】:

  • 请注意,在某些语言中存在其他语言不具备的语言功能,因此不会具有相同的 IL。就像 C# 的 foreach 和 VB.Net 的 Select Case 一样(是的,它主要是一个开关,但它允许为每种情况使用表达式而不是常量)
  • @Corey 在您看来,C# 的 foreach 有什么特别之处?
  • 我确实撤回了,在查看它之后,事实证明 VB 也有它。我认为在某一时刻 C# 做到了,而 VB 没有......
  • @Corey 顺便说一句,即使是 VB6 也确实有 For Each 语句——所以 VB C# 之前就有了它。 VB 采用了以前 C# 版本的一些其他特性。
  • 我希望 C# 快点在 switch 语句中获取表达式。
猜你喜欢
  • 2012-12-01
  • 2011-10-29
  • 2010-10-02
  • 2023-03-15
  • 2012-03-05
  • 2014-05-17
  • 2012-08-21
  • 1970-01-01
  • 2014-02-23
相关资源
最近更新 更多