提问人:Larsenal 提问时间:8/15/2008 更新时间:2/11/2015 访问量:10378
C# 和 VB.NET 之间最重要的功能差异是什么?
What are the most important functional differences between C# and VB.NET?
答:
自 .Net 2.0 发布以来,这个话题已经有很多面对面的时间。请参阅这篇维基百科文章以获取可读的摘要。
这是一个非常全面的参考。
由于我假设您可以谷歌,因此我认为指向更多网站的链接并不是您正在寻找的。
我的回答是:根据开发人员的历史进行选择。C#更像JAVA,可能更像C++。 VB.NET VB 程序员来说更容易,但我想这不再是一个真正的问题,因为没有来自旧 VB 的新 .NET 程序员。
我的观点是 VB 比 C# 更有效率,似乎它在生产力工具(例如智能感知)方面总是领先,我会向有问题的人推荐 vb 而不是 c#。当然,知道自己更喜欢 c# 的人不会问,而 c# 可能是他的正确选择。
链接的比较非常彻底,但就主要差异而言,我会注意到以下几点:
C# 具有匿名方法VB 现在也有了这些C# 具有 yield 关键字(迭代器块)VB11 添加了这个- VB 支持隐式后期绑定(C# 现在通过 dynamic 关键字具有显式后期绑定)
- VB 支持 XML 文本
- VB 不区分大小写
- 更多 VB 的开箱即用代码片段
更多适用于 C# 的现成重构工具Visual Studio 2015 现在为 VB 和 C# 提供相同的重构工具。
一般来说,MS对每种语言的关注点各不相同,因为这两种语言的目标受众非常不同。这篇博文对目标受众进行了很好的总结。确定你属于哪个受众可能是一个好主意,因为它将决定你将从 Microsoft 获得什么样的工具。
评论
dynamic
dynamic
Yield
dynamic
Object
除了语法,不再那么多了。它们都编译为完全相同的 IL,因此您可以将某些内容编译为 VB 并将其反映到 C# 中。
大多数明显的差异是句法糖。例如,VB 似乎支持动态类型,但实际上它们和 C# 一样是静态的——VB 编译器会弄清楚它们。
Visual Studio 在 VB 中的行为与 C# 不同 - 它隐藏了许多功能,但增加了后台编译(非常适合小型项目,占用资源用于大型项目)和更好的代码片段支持。
随着 C#3 中越来越多的编译器“魔力”,VB.Net 确实落后了。VB 现在唯一拥有的 C# 所没有的就是关键字 - 这是值得商榷的。handles
@Tom - 这真的很有用,但有点过时了 - VB.Net 现在也支持 XML 文档'''
@Luke - VB.Net 仍然没有非方法,但现在支持 lambda。
评论
这可以被视为语法,但 VB.NET 区分大小写,而 C# 区分大小写。
评论
当它到达 IL 时,一切都只是位。这种不区分大小写只是预编译器传递。 但普遍的共识是,vb 更冗长。 如果你能写 c#,为什么不省去你的眼睛和手,写少量的代码来做同样的事情呢?
尽管 C#3 上的语法糖确实推动了标准的发展,但我必须说 VB.Net 中的一些 Linq to XML 的东西看起来相当不错,并且使处理复杂、深度嵌套的 XML 变得更容易忍受。只是一点点。
一个明显的区别是它们如何处理扩展方法(Vb.Net 实际上允许 C# 不允许的东西 - 传递将扩展方法定义为 ref 的类型):http://blog.gadodia.net/extension-methods-in-vbnet-and-c/
一个明显的区别是它们如何处理扩展方法(Vb.Net 实际上允许 C# 不允许的东西 - 传递将扩展方法定义为 ref 的类型):http://blog.gadodia.net/extension-methods-in-vbnet-and-c/
评论
ref
在我看来,最大的区别是能够用 C# 编写不安全的代码。
虽然 VB.NET 支持尝试...catch 类型异常处理,它仍然具有类似于 VB6 的 ON ERROR 的内容。ON ERROR 可能会被严重滥用,在绝大多数情况下,尝试......渔获量要好得多;但是,在处理 COM 超时操作时,ON ERROR 可能很有用,其中错误可以被捕获、解码,并且最终的“重试”是简单的一行。 你可以用try做同样的事情...捕获,但代码要混乱得多。
是的,VB.NET 修复了大部分 VB6 问题并使其成为正确的 OOP 语言 - 即。在功能上与 C# 相似。尽管如此,我倾向于更喜欢 C#,我确实发现旧的 VB ON ERROR 构造对于处理 COM 互操作超时很有用。不过要明智地使用一些东西 - ON ERROR 很容易被滥用!!
这个主题在维基百科和哈丁有简要描述。
http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
只需仔细阅读并做笔记即可。
评论