在工作场所使用VB.Net和C#的优点和缺点是什么?

时间:2009-07-21 01:35:13

标签: c# .net vb.net

在同事的工作场所,正在尝试制定是否在工作场所使用这两种语言或在一种语言上实现标准化?有一些VB.Net开发人员和一些C#开发人员。

使用和使用两者有什么优点或缺点?

编辑:为了澄清这个问题,问题不是要求一个优于另一个的优点,而是标准化两种语言与标准化的优势/劣势是什么。

例如,有一点可能是C#/ VB.Net可能有更多第三方工具可用,因此将所有开发人员标准化为该语言可能是有意义的。

9 个答案:

答案 0 :(得分:9)

我们应该为这次讨论戴上我们的现实眼镜。这不仅仅是句法糖。

您会发现可以在Visual Basic.NET中快速编写 very 代码。这主要是由于C#尚未提供的一些功能:即My命名空间,它提供了大量功能,C#开发人员必须经常手动编写代码。 (如果你问我,那真是太可惜了。)

我每天都用两种语言编码。 Visual Basic中表单的编码事件处理程序是一个快照,很明显哪些方法处理哪些事件。在C#中并不总是那么清楚。另一方面,您不能总是像在Visual Basic中那样显式,因为Visual Basic为您完成了大量工作。 C#的优势在于让你的方式不受限制,让你深入了解螺母和螺栓。很多时候,这是非常自由的。

VB将允许您在对象实例上调用静态/共享方法。 C#不会。当您尝试移植代码时,您将学到很难的方法。 C#会抱怨无法访问的代码; VB并不关心这种或那种方式。

但是在幕后,当你接下来的时候,它就是.NET。这一切都归结为MSIL。会有细微的差别。例如,Visual Basic不关心C#的名称区分大小写。而且最重要的是CLR也是如此。当你尝试使用反射时,你会意识到。这是否意味着你不应该使用VB?不。只要确保你的内容始终如一 - 尤其是你的命名空间。 (命名空间“My”和命名空间“my”是两个与C#和CLR完全不同的命名空间,但它们与VB相同。)

选择最能提高工作效率的语言,从而减少加速时间和维护成本。您可能会发现这意味着使用这两种语言。 (我们做!)

编辑地址OP编辑:

  • 重构工具适用于两种语言。

  • 自动单元测试工具同样适用。

  • 第二方控件将可用于两种语言,因为它们已编译为MSIL。

  • 现在,对于IDE生产力工具,C#目前VB没有的东西是StyleCop。这可能会很快改变(我希望它会改变),但我并不认为这是任何想象力的障碍。

答案 1 :(得分:5)

这是与工作场所传说相结合的个人经历:

  1. 与C#相比,VB.NET能够更加灵活,因为没有标准委员会(除了微软可能存在的任何标准委员会)。
  2. 大多数支持Google的代码都是在C#中完成的,并且大多数最好的资源书都只提供C#中的代码示例。
  3. 即使是最无能为力的开发人员也可以访问VB.NET的历史。这是不公平的,因为VB.NET更像是一种“真正的”语言。但是污点不会很快被洗掉,“真正的”程序员一般都会鄙视它。
  4. 至于现实生活 - 我在C#和VB.NET中编写自己的代码。我相信,因为为.NET编写的代码中有很多是针对框架对象的调用,所以差异实际上非常小。如果你能用两种语言声明变量,那么80%是可移植的。如果您了解框架,语言的语法是一个小障碍。

    编辑直接回答你的问题:我们很高兴使用两者(虽然主要是VB.NET)并且从未遇到过任何问题。我们使用Visual Studio,它允许我们非常自由地混合代码文件/程序集。我鼓励你不要限制一种语言 - 我认为一些多样性对大脑有好处。

答案 2 :(得分:4)

我的工作场所传统上是一家VB.Net商店,但几年前决定改用C#。这种情况的发生主要是因为VB开发人员要么离开要么搬到其他位置,而且大多数新员工更喜欢C#。我们仍然有一个庞大的遗留VB.Net代码库,但所有新开发都是在C#中完成的。

我认为选择一种语言并不是一种强大的技术理由,因为它们在功能上非常相似,但我觉得有一些合理的理由选择一种类型的开发者而不是另一种。虽然我认为VB和C#是相同的,但不幸的是C#开发人员比VB开发人员更好。虽然有一些理由,但它过于夸张了。 (它更适用于C ++ / VB时代。)也就是说,存在感知。这确实会让一些有才华的开发人员避免和抨击VB(尽管他们通常是从无知中这样做)。我认为将开发人员聘用到VB商店比反之亦然更困难,因为C#开发人员常常会不得不使用VB,但VB开发人员通常并不反对使用C#。选择C#而不是VB有一个明显的缺点,那就是C#开发人员通常会得到更多报酬。

根据我的经验,最好的开发者欢迎使用这两种语言。你知道的语言越多越好。

答案 3 :(得分:2)

在稍微跟踪你的问题并注意到你的编辑之后,我不得不怀疑你是否有点钓鱼......

无论哪种方式,我认为至少最新的第三方工具支持C#是相当明显的。我和其他响应者一样,代码VB用于工作,而更喜欢C#用于其他开发。我肯定注意到许多第三方插件/插件的文档,在某些情况下产品本身也支持C#。尽管4.5具有更好的VB支持,但ReSharper在使用C#时仍然更加全面。其他框架,如Fluent NHibernate,根本不支持VB。所以对于工具,特别是考虑到最新的东西时,我相信C#会胜出。更不用说C#在3.0中有一些新功能,直到VB 10广泛发布才能使用。

我仍然全心全意地同意其他人;如果你能用C#做,你可以用VB做。最后,它们都是相同的CLR。

答案 4 :(得分:1)

我认为,鉴于有“一些VB.NET开发人员和一些C#开发人员”,强迫每个人使用一种语言实际上没什么好处。坦率地说,即使是一个从未看过C#的VB.NET开发人员也应该能够阅读C#代码,只需简单介绍一下语法,假设他/她对.NET框架有一个合理的理解;并且C#开发人员应该能够对VB.NET做同样的事情。

(我还应该补充一点:假设每个人都可以访问.NET语言可以和谐共存的开发环境 - 例如,VS2005,VS2008等,而不是其中一个Express Edition,据我所知,不允许使用多语言解决方案。)

答案 5 :(得分:1)

不要因为“大多数示例/书籍是为C#编写的”而堕落。研究如何将一个C#示例应用于VB.NET是微不足道的 - 你将更难以理解编写示例/书籍的白痴正在尝试做什么以及他们可怕的编码(联合)约定是什么而不是你会在心理上将C#语法翻转为VB语法。

另外我要说的是不要担心你是否雇用C#或VB.NET程序员:如果他们有任何好的那么那么他们就不会有阅读/写作的问题语言。

我们在这里使用两者,经过一些阻力(之前我们使用的是C ++)已经很好地解决了。正如我预测的那样,我们团队最难的事情是(可能仍然是)从MFC到.NET的转换,而不是用于访问库的语言。

FWIW我们的主要部分是用于UI代码的VB.NET,以及用于后端/数据库/计算代码的C#。

答案 6 :(得分:0)

C#和VB.net的语法不同。您可以很容易地从C#转换为VB.net并返回。 VB.net确实具有C#没有的一些额外优势,例如内联XML。

大多数地方都有C#,因为它是比较流行的语言。

答案 7 :(得分:0)

我最初是一名VB开发人员,所以当我第一次使用.Net时,我自然会迁移到VB.Net。事实上,我的第一个.Net应用程序也是在VB.Net中制作的。但是我尝试了C#,发现自己在几周之内就更喜欢它了。

所以我在C#中创建了一些应用程序(一些库)并且它没有伤害我。现在虽然我讨厌回到旧的VB.Net代码并继续努力。我真的希望我能以某种方式将其改为C#。

这不会发生。

所以我在这里告诉你的是,与你选择的语言(VB / C#)无关。除非你有令人信服的理由我不能想到,否则不要进行混合语言开发:)

答案 8 :(得分:0)

标准化单一语言的优势在于,基本上每个人都有1/2的学习量。我认为最好花时间在一种语言中学习.NET的更多功能,而不是学习两者中的功能。

就招聘而言,它并没有真正限制你作为一个好的VB或C#程序员应该能够毫无困难地切换到另一种语言(或者他们不是一个真正优秀的程序员:)。