C#优于VB
什么在C#.NET中使它更适合某些项目而不是VB.NET?
性能?,function?,库/组件?,声誉?,可靠性? 可维护性?,轻松?
基本上C#可以做任何事情,使用VB是不可能的,反之亦然。 在为项目选择C#/ VB时您必须考虑的事项 。
C#和VB基本相同但是有一些细微差别。 除了明显的语法差异,您还有以下不同之处:
- C#可以调用不安全的代码
- VB有可选参数(进入C#4.0)
- VB在进行后期绑定调用时更容易使用(来自C#4.0)这个和数字make 2使用VB来使办公自动化更加清洁。
- VB有一堆“辅助”函数和类,如My命名空间; 但是,所有这些都可以被C#访问
- VB不区分大小写
C#的语法遵循与c和java类似的语法,这使得从这些语言转换起来更加舒适,因为VB对VB用户来说更舒服。 到目前为止,性能,库或组件几乎完全相同。
至于选择哪一个,除非你需要做不安全的操作,然后选择最自然的语言。 经过多年的VB开发人员,我喜欢不必写作如果yadada然后…..结束如果(yadaya){….}保存我的腕管一些额外的击键(然后可以用来回答SO题)
编辑
刚刚学到了另一个区别,因为C#和VB是VB支持过滤的exception,所以你可以像这样伪:
try { //do something that fails } catch(Exception ex when ArgumentException, ArgumentNullException, FormatException) { //Only handle these three types }
这不应该与能力:
try { //something that fails } catch(ArgumentException) { //Log Error } catch(ArgumentNullException) { //Log Error }
在这种情况下,您将在VB世界中以不同方式处理exception,您可以定义一段代码来处理多种类型的exception。
编辑
更多的差异。
- VB的Is运算符比较两个对象以确定它们是否相同,它编译为CEQ IL指令,其中C#编译为isinst IL。 所以以下是等效的陈述
c# if (foo is FooObject){}
vb If TypeOf foo is FooObject then
- 同样如评论中所述,我希望我能看到它们给你信用,但C#没有类似的参数。 您需要使用RegEx类。
我认为Kathleen Dollard的这篇博文提供了一个很好的概述:
在编写VB之前,C#编码器应该知道什么
她的第一个建议是:
1)在开始之前克服尊重或戒烟。 VB是一门很棒的语言。
极客之间的街头信誉。
(并且不要假装这不重要!)
其他人已经涵盖了很多差异 – 正如已经多次说过的那样,它们几乎是等同的语言。 就我所见,有些差异尚未涵盖:
VB9有:
C#3有:
我怀疑还有更多,但我想我会把它们扔进去。
当您遇到问题时,您通常可以通过Google获取代码示例,该示例显示如何在几分钟内解决问题。 这是提高生产率的重要因素。 当我使用Delphi时,我不得不将代码样本从C转换为Object Pascal – 可行,但是单调乏味,即大量摩擦。 所以不要低估……
绝大多数.Net代码示例都在C#中!
在VB.NET的早期版本中,差异更明显,但是对于当前版本,没有显着差异。
VB直接在代码中支持XML文字,C#不支持。 C#支持不安全的代码而VB则不支持。 从技术上讲,这两者是最大的差异。 有许多小的变化,但它们并不重要。 我更喜欢C#因为我认为语法不那么臃肿。 很容易识别代码块而不是看到一堆关键字,但这是一个纯粹的个人偏好。
选择您和您的团队更熟悉的那个。
VB.Net有一个根命名空间,C#有一个默认的命名空间,它不相同。 因为当你在VB.Net中有一个根命名空间时,它总是会在命名空间之前添加它。
例如:如果你在VB.Net中有一个名为namespace1的rootnamepsace,那么你将它添加到你的文件中。
Namespace namespace1 Public Class class1 End Class End Namespace
那么你将不得不将它称为namespace1.namespace.class1
在C#中,如果你有一个名为namespace1的默认命名空间,那你就在你的文件中。
namespace namespace1{ public class class1{} }
然后你仍然可以将它称为namespace1.class1
VB最没有的C#特性是yield语句。 它允许您从方法轻松返回延迟评估的IEnumerable。
这是一篇涵盖它的文章: http : //msdn.microsoft.com/en-us/magazine/cc163970.aspx
VB对错误有更好的反馈。 在C#中,您必须更频繁地编译以获取语法中的所有错误。
我在C#中看到的最大优势是绝大多数开源项目,示例代码和博客片段都是用C#编写的。 虽然使用工具(或者你的头)很容易将它们转换为VB.NET,但对于VB开发者来说(对我来说)仍然是单调的任务。
即使你每天都在VB.NET中编写,你仍然需要能够阅读C#
从技术上讲,它们共享具有相同性能和内存特性以及相同类型系统的相同框架,因此我发现很难将这两者分开。
大多数优秀的开发人员应该能够在两天之间调整,调整时间为几天。
我的核心挫折在于我写下的数百次:
String lastName as String
并想知道为什么它永远不会编译!
在C#中,您可以对事件/代理进行更精细的控制。 但你很少需要这个。
C#还有很多代码示例。
在VB.Net中,(很多)使用后期绑定更容易。 例如,对COM对象(在4.0版本的C#中)。
一旦我更了解F#,我可能会将它用于F#更适合的部件。
性能?
没有区别,虽然VB历史上在循环中使用了一个奇怪的索引,这意味着你必须在大多数时间从最高索引中减去1:
For i = 0 To someArrayOrString.Length - 1 …
虽然我怀疑这会以任何可衡量的方式影响性能。
另一方面,由于后台编译,VB实际编译速度似乎更快 。 有些人声称这会让IDE反应缓慢,但我从未注意到自己。
能力?
在少数情况下,C#的yield
语句非常有用。 VB需要更多的手动工作。 另外,lambda在C#中实现得更好,特别是在语法上。 考虑这两个陈述:
Parallel.For(1, 10000, i => { // Do something });
与
Parallel.For(1, 10000, Sub() _ ' Do something ' End Sub)
除了VB还不能做到这一点的事实,并且禁止在这个地方发表评论,它只是更加混乱,而且通常是禁止的。
库/组件?
相同。
声誉?
不重要。 “街头威望”? 抱歉。 不是一个因素。 克服它,尼克。
可靠性? 可维护性? 缓解?
或多或少相同。 我声称VB更容易,但可能有偏见,无论如何,它只是边缘。
据我了解,语言之间存在差异,尽管它们很小。 我建议您使用您/您的开发人员最满意的语言。 如果他们已经有VB经验,那么我建议VB.Net/vice-versa。
虽然我更喜欢C#的简洁语法。 ?
由于C#和VB.Net都编译成MSIL,因此它们具有几乎相同的性能,function,库和组件。 reflection可以将MSIL代码解压缩为C#或VB.NET(或许多其他语言)
这基本上离开了我们,C#看起来很像Java和C ++,这使它更具可信度。
我认为Josh对语言差异进行了很好的汇总。
工具支持
但是,Visual Studio处理这些语言的方式也存在差异。 代码片段更容易在C#编辑器中使用,重构也更好。
VB编辑器通过不显示所有选项来简化智能感知。
我确信还有更多的东西,但那些我作为C#’(做很少的VB)注意到的东西。
以下是此追踪尚未涵盖的另一点:
更高的就业能力+更好(更多)开发资源
但现在我不同意这种观点:
VB商店有更多的C#开发商店
如果你对VB更强,那么一些落后的c#雇主会让你处于严重的劣势。 所以也许C#是更好的选择。
另一方面,当您为C#项目雇用人员时,您将能够吸引更多候选人参与iterview并获得更好的技能 – 我不认为细节应该被忽视。
我不得不说,在使用Google搜索示例或文档时,我的经验是C#示例质量比VB示例更好。 这并不是说没有糟糕的C#示例,但是如果你搜索“字典下拉”这样的东西,添加C#将在列表中提供更高质量的答案。
这不适用于并排显示C#和VB代码的示例。
目前,VB.Net的lambda表达式实现很差。 这意味着你无法在C#中做到整洁的事情。 嗯,你可以,但在大多数情况下,它需要一个非常丑陋的解决方法。
这在VB.Net 10.0中得到了解决。
没有旧的cruft,C#中的数组声明没有填充额外的元素。 VB.NET数组填充了额外的元素,因此传统的VB6代码迁移更容易。
C#比VB.NET更加一致
Button1.Color() = Color.Red Button1.Color = Color.Red
当一个学生问我什么时候在VB.NET的属性上使用括号时,我无法给出答案。 对于这种错误,很难给出深刻的推理。
与实例和静态成员的一致性。 VB.NET允许访问实例上的静态成员,例如yarn.Sleep(1000),这是一种错误。 https://stackoverflow.com/questions/312419/language-features-you-should-never-use
上述就是C#学习教程:C#优于VB分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1009431.html