C#优于VB

Rob*_*cks 11 .net c# vb.net

C#.NET中的哪些内容使它比VB.NET 更适合某些项目?

性能?,功能?,库/组件?,声誉?,可靠性?可维护性?,轻松?


基本上C#可以做任何事情,使用VB是不可能的,反之亦然.在为项目选择C#/ VB时您必须考虑的事项.

Jos*_*rke 33

C#和VB基本相同但是有一些细微差别.除了明显的语法差异,您还有以下不同之处:

  1. C#可以调用不安全的代码
  2. VB有可选参数(进入C#4.0)
  3. VB在进行后期绑定调用时更容易使用(来自C#4.0)这个和数字make 2使用VB来使办公自动化更加清洁.
  4. VB有一堆"helper"函数和类,如My namespace; 但是,所有这些都可以被C#访问
  5. VB不区分大小写

C#的语法遵循与c和java类似的语法,这使得从这些语言转换起来更加舒适,因为VB对VB用户来说更舒服.到目前为止,性能,库或组件几乎完全相同.

至于选择哪一个,除非你需要做不安全的操作,然后选择最自然的语言.经过多年的VB开发人员,我喜欢不必写作如果yadada然后.....结束如果(yadaya){....}保存我的腕管一些额外的击键(然后可以用来回答SO题)

编辑

刚学到了另外一个区别btw C#和VB是VB支持过滤异常,所以你可以像这样伪:

try
{
   //do something that fails
}
catch(Exception ex when ArgumentException, 
      ArgumentNullException, FormatException)
{
  //Only handle these three types
}
Run Code Online (Sandbox Code Playgroud)

这不应该与能力:

try
{ 
    //something that fails
}
catch(ArgumentException)
{ 
    //Log Error
}
catch(ArgumentNullException)
{
    //Log Error
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您将在VB世界中以不同方式处理异常,您可以定义一段代码来处理多种类型的异常.

编辑

更多的差异.

  1. VB的Is运算符比较两个对象以确定它们是否相同,它编译为CEQ IL指令,其中C#编译为isinst IL.所以以下是等效的陈述

C# if (foo is FooObject){}

VB If TypeOf foo is FooObject then

  1. 同样如评论中所述,我希望我能看到它们给你信用,但C#没有相似的参数.您需要使用RegEx类.

  • 你确定VB不区分大小写吗?我认为只是Visual Studio为您修复了变量和方法的大小写. (2认同)

spl*_*tne 21

我认为Kathleen Dollard的这篇博文提供了一个很好的概述:

C#编码器在编写VB之前应该知道什么

她的第一个建议是:

1)在开始之前克服尊重或戒烟.VB是一门很棒的语言.


Ctr*_*Dot 15

极客之间的街头信誉.

(并且不要假装这不重要!)


Jon*_*eet 11

其他人已经涵盖了很多差异 - 正如已经多次说过的那样,它们几乎是等同的语言.在我看到的一些差异尚未涵盖的范围内:

VB9有:

  • XML文字
  • 可变匿名类型(urgh)
  • 语言中支持更多LINQ (C#仅涵盖少数运营商)
  • 语言中的一大堆额外位被编译为调用Microsoft.VisualBasic程序集.(C#更喜欢使用.NET框架重量的小语言.)
  • DateTime文字

C#3有:

  • 更好地支持lambda表达式:IIRC,你不能在VB中用块体写一个lambda表达式.
  • 迭代器块.
  • 扩展方法的语法(而不是用属性装饰方法)

我怀疑还有更多,但我想我会把它们扔进去.


Mik*_*ott 9

当您遇到问题时,您通常可以通过Google获取代码示例,该示例显示如何在几分钟内解决问题.这是提高生产率的重要因素.当我使用Delphi时,我不得不将代码样本从C转换为Object Pascal - 可行,但是单调乏味,即大量摩擦.所以不要低估......

绝大多数.Net代码示例都在C#中!

  • 真的,也很重要,这就是为什么每个VB程序员都应该知道C# - 反之亦然. (6认同)

Meh*_*ari 5

在早期版本的VB.NET中,差异更明显,但是对于当前版本,没有显着差异.

VB直接在代码中支持XML文字,C#不支持.C#支持不安全的代码而VB则不支持.从技术上讲,这两者是最大的差异.有许多小的变化,但它们并不重要.我更喜欢C#,因为我认为语法不那么臃肿.很容易识别代码块而不是看到一堆关键字,但这是一个纯粹的个人偏好.

选择您和您的团队更熟悉的那个.

  • _不是没有必要的.它使";" 在你的"编程线"结束时过时99%的时间你不需要_ (4认同)