VB.NET和C#
发表于:2007-06-30来源:作者:点击数:
标签:
面向对象 的编程在.NET世界是不可避免的。你该选择哪一种语言呢? 随着 VB .NET的推出,微软已经赋予了VB 程序员 多年来长期要求的所有特性,即一种真正的面向对象的编程语言。你也许听到过VB.NET改动之大甚至你都无法认识的嗡嗡讨论声。确实,他们不得不去
面向对象的编程在.NET世界是不可避免的。你该选择哪一种语言呢?
随着
VB.NET的推出,微软已经赋予了VB
程序员多年来长期要求的所有特性,即一种真正的面向对象的编程语言。你也许听到过VB.NET改动之大甚至你都无法认识的嗡嗡讨论声。确实,他们不得不去掉语言中的一些次要的东西,并且改变一些对象、属性和方法。但这对大多数VB程序员来说不是一个大的负担。事实上,我认为当你开始经常使用后,你会发现它比以前的VB版本更简单、直观。因为对VB.NET将存在着学习曲线,你也许会对C#好奇而想知道是否该放弃VB。
假如你现在是一位VB程序员,特别是有多年的编程经验,你完全不必转到另一种编程语言象C#、Delphi。虽然它们有一些细小的差别,你会发现VB的核心语言仍然是相同的。主要的变化是你在VB.NET中使用的对象、属性和方法。你必须学习这些新东西而不管选择使用哪一种.NET语言。
现在,假如你从古老的DOS岁月就一直使用BASIC,那么你会受到一些打击,因为他们已经去掉了GoSub, While/Wend,Let a=b和其它大量的陈旧命令。但是微软一直在警告你任何地方都不要使用这些非结构化的声明。
VB.NET的优点
VB.NET有着C#不具备的特性。例如,IsDBNull()函数在VB.NET存在,而C#没有。VB.NET有求幂功能并能使用Redim重新分配数组,这些在C#中也不可能。C#对关键词和变量是大小写敏感的,大部分VB程序员不习惯于这点。而这会浪费时间除非你在输入时确实保持了一致。个人来说,我喜欢VB中使用If. . .End If和Do. . .Loop,反对C#中使用curly braces。我发现很难跟踪这些braces。Select Case声明比C#更容易、简洁。在C#中,你必须始终使用break语句来跳出select声明。在VB中,你能用Case 1 to 50;在C#中你必须编写50个单独的case声明来实现此功能。
当你正使用VB的OOP(面向对象编程)特性时,你会发现象Inherits, MustInherit,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() {
...
}
}
假如你不仔细查看,也许会忽略这个事实,C#版本中的Employee类是从Person类继承的(用Employee : Person语法表示)。
升级进程会有多糟呢?
从VB6到VB.NET的迁移不会没有挑战,但是现在你可以做些事来准备。首先,使用类,COM 组件,和n-tier(n-层)
开发技术。假如你使用这些编程结构,到转向.NET时就会有最容易的迁移路径。有一些编程风格不会如此容易的迁移——例如,基于非0的数组,隐式变量(没有使用Option Explicit)和Jet或RDO。你不得不做大量的重写工作来转换这些类型的应用。
在你已存在的应用中继续使用VB6,在新的开发时采用VB.NET,没有什么错。这两种在一台机器上相处融洽。事实上,这成了一个通用方法。
C#介绍
微软创建C#时怀有几个目的。首先,他们需要一个
Java的替代品。随着他们和这种语言的持续法庭斗争,以及大多数人认为Java是Sun的产品,微软需要自己的类似Java的语言,并且能很明显看出是他们自己的。另外,微软想要一种新的、干净的语言,没有用户仍然需要维持的任何遗留代码。结局就是一种干净的语言,没有大量的包袱。
最愿意使用C#语言的是Java,C和 C++ 开发人员。这些开发人员已经熟悉了语言的结构和大小写敏感。他们也需要对待到.NET的学习曲线,因此他们不会比VB程序员有太多的优势。
C#的优点
我无可否认的是一个VB支持者,但是C#确实有一些优点。例如,多行注释的能力,不需要重复注释字符是相当灵活的。C#也能做前和后的自增、自减,例如:
intValue--
intValue-
上述代码的第一行使变量intValue增加1。第二行使变量减少1。相对于VB版本更长的intValue += 1,这是一种漂亮的速记。
C#的另一个好处是当前在beta版中比VB.NET有更多的示例程序。在未来发行时很可能发生变化。
虽然商业应用软件中不是经常使用,C#允许你使用指针。然而指针能导致许多问题,你需要它们也许有一段时间。在这种场合下,C#比VB有一点微小的优势。然而在我的编程生涯中,很少用到指针。
C#能使用定义在.NET 运行时的Unsigned数据类型。再一次,商业应用软件中对这点的需要并不经常,但是它是C#比VB.NET有对.NET运行时引擎更多访问能力的一个方面。
迁移之路
VB6通向VB.NET的路不会容易,但我认为你值得花时间学习这种新语言。同时,我推荐你开始学习OOP风格的编程,在.NET世界的编程中肯定需要。无论你选择哪一种语言,你将发现.NET平台对创建桌面,Internet,intranet和分布式应用是极其好的。
原文转自:http://www.ltesting.net