选择VB.Net还是C#(转载)
面向对象的程序设计不可避免的将会出现在.Net的世界里。现在问题是,我们要选择哪一种语言呢?  (编者注:如果您是VB程序员,那么本文将会为您介绍VB.Net与以前版本VB的区别,如果您是C#、C++,C,Java程序员,本文最好不要看, 此文的作者的某些观点会让我们这些程序员吐血)  在VB.Net中,微软给与了VB程序员们多年来梦寐以求的东东,也就是真正的面向对象的程序设计语言。也许您已经听说了,VB.Net与他的前身VB有很大的不同,甚至您都不会认识它了。确实,他们不得不删除了一些细小的东东,同时改变了一些对象,属性以及方法,但是这些对一个VB程序员来说都不是什么大问题。实际上,我认为一旦您已经能够熟练的使用VB.Net,您会发现它比以前的VB版本更加简单和直观。因为在学习VB.Net的路上要走不少的弯路,所以我想您可能会对C#产生好奇心,盘算着是否需要放弃VB。
  如果您现在已经是一个VB程序员了,而且已经有一定时间了,那么您并不需要去选择其它的语言,比如C#或Delphi。你会发现VB尽管已经的改变了不少,但是它的核心依在。最主要的变化存在于使用VB.Net中的对象、属性以及方法。不论您学习哪样.Net程序,这些都是需要重新学习的。  如果您从Dos时代便开始使用BASIC语言,那么VB.Net将会让你承受不小的打击。VB.Net已经去掉了GoSub,While/Wend以及其它一些陈旧的语句。 但是微软已经发出警告,在任何情况下都不要使用非结构性语句。  VB.Net 的优势  VB.Net 拥有features,而C#没有。比如,IsDBNull()函数就只存在于VB.Net,C#中是不没有的。  VB.Net拥有求幂函数以及重新分配数组空间的Redim ,这些C#中也没有。C#对大小写很敏感,而大多数的VB程序并不习惯于区分大小写。以我个人来说,我喜欢VB中的If ....End If 以及Do ...Loop的方式,而不太喜欢C#中{}符号。Select Case语句也比C#中的switch语句更加简单和紧凑。在C#中,你不得不使用break语句去中止查询结构。在VB中,你能使用Case 1 to 50,但是在C#中你不得不使用50个独立的case语句来完成。
  当你在使用VB中面象对象的特性时,你会发现Inherits,MoustInherit,NotInheritable,Overridable以及其它一些关键字。在C#中,这样的特性您不得不调用一些模糊的关键字和语法,比如在VB.Net中,继承一个类,你可以这样写: Public Class Person
   ...
  End Class
  Public Class Employee
   Inherits Person
  ...
End Class
   如果使用C#就必须: public class Person
 {
  public Person() { 
  ...
  }
 }
 public class Employee : Person
 {
  public Employee() { 
  ...
  }
 }
 
  如果你不仔细,您可能会忘记使用Employee: Person语法来继承Person类。  (编者注: 此作者为典型的VB程序员,呵呵,没有想到编者认为的C#的优点,全被此作者否定。 在这些上面编者的个人观点与这位作者不同,其实只要大家习惯,就会发现C#是多么的好用。如果大家是从VB转到C#,那么肯定会有一些不适应,但是也没有到全盘否定的地步,呵呵,习惯就好)  升级至VB.Net有多大困难?  从VB6.0移植至VB.Net,并非没有挑战必。但是这里有些事情,我们必须事先准备好:第一,使用类,COM组件,以及递行排列的开发技术。如果您使用这些程序开发构造,您的移植工作将会很简单。这里有些程序样式并不是很容易移植的,比如非零数组,隐含变量(即没有使用Option Explicit),以及Jet或者RDO。  介绍C#  微软在创建C#时有两种思想:第一,需要一个Java的竞争者,微软需要一个绝对属于本公司的类似于Java的语言。另外就是,微软希望有一个全新的,整洁的语言。  C#适合于那些Java、C以及C++程序员,这些程序员已经很习惯于这种语言的结构以及对大小写敏感的特性。他们也不得不重头学习.Net的类库,因此在这时们并不比VB程序员有多少优势。
  C#的优势  我无可否认,是一名VB的支持者,但是C#确实存在一些优势,比如多行注释,以及一些代码的简写:  intValue--  intValue-  其它一些C#的优点就是在Beta版文档中,C#的资料比VB多。  尽管不会经常用于编写商业应用程序,但是C#还是支持指针。在这个方面C#确实比VB有着一些小小的优势。但是,在我的程序中,我很少使用指针。  (编者注:可能是我翻译有错误,pointer是否表示指针,如果是,这位作者已经犯下一个天大的错误,那就是C#中并不支持指针,而且不知道这位作者是否使用过VC#,怎么能说C#不经常编写商业应用程序?)  C#拥有使用Unsigned数据类型的能力,同样的,在商业应用程序中它的使用并不广泛。
  移植之路  从VB6.移植至VB.Net的道路并不平坦,但是我想对于想学好一门新程序语言的您来说,这份投资是值得的。在学习中,我推荐您学习面像对象的程序方式。你会经常在.Net的编程世界中经常使用到它。  (编者总结:因为作者是一位优秀的VB程序,可能对C#并不是十分了解,对于C#他基本是否定的,他所说的有些观点,编者可以肯定地告诉大家,那是错误的,但是作者对于VB.Net的分析还是非常有用处的)

解决方案 »

  1.   

    vb.net,用惯的东东丢掉太可惜了!!!
      

  2.   

    我也是一个使用了两年VB的程序员.也有开发了几个项目.但VB还是有很多不尽人意的地方(可能是我能力有限).
    最近,我把VB6.0升级VB.NET,竟然用了整整一个天(不是手工哦!用升级向导).所以我想,与其要花100分力气升级,何不用105分力气学C#.
      

  3.   

    vb.net与c#有非常相似的地方,基本属于一种语系。
    如果你是学vb的,先看vb.net,再转c#是非常容易的。
    不相信你可以看他们的例子程序,你就明白了!
    good luck!
    我是vb.net的忠实使用者。vb.net有非常过人之处,满满的你就会体会了。
      

  4.   

    vb.net 既然开发出来了为什么不用那
      

  5.   

    一个快速学习.NET的好方法!!如果你是VB程序员,建议你先简单的学习VB.net,等对Microsoft 的基类库有一定的认识了后,再转向C#,那时你会发现C#已经很简单,与VB.net是如此的像!这时,你已经掌握了VB.net与C#两种语言,但要深入还得费不少的经历!但我觉得这是一个快速入门的好办法。供大家借鉴!!!