Visual Basic.net 还是 C#
——如何选择 .net 语言
在 .net 中,如何选择 VB 或 C# ?这似乎已经争论了很久。很多人盲目选择,也产生了许多流言和错误。本文将从以下方面指导你选择正确的开发语言。
功能上的考虑
许多人认为 C# 的功能比 VB.net 强大,或者 C# 更加适合 .net 等。其实这不是一两句话能比较清楚的。 C# 的确有 VB 无法完成的功能,但 VB 也有 C# 无法完成的功能。总的来说,对于 .net 开发, VB 和 C# 没有任何差别,都 100% 兼容于 CLS 。下面列出的是他们 语言功能 上的不同,这些仅仅是语言实现上的问题,不会影响到生成的代码。 打 ** * ** ** 号的内容与 CLS ** ** 不兼容 ** 。
C# 有而 VB 没有的功能:
1、 运算符重载。 *
2、 不安全代码(指针和固定内存区)。 *
3、 无符号整数。 *
4、 移位运算。
VB 有而 C# 没有的功能
1、 即时编译。
2、 静态事件绑定。
3、 条件异常捕获。
4、 COM 兼容类。 *
5、 宽松的类型检查和变量声明。
6、 Visual Basic Runtime 库。
7、 可选参数、带参数属性、模块等语言特征。 *
8、 动态数组。 *
可见,实际上功能更强大的是 VB 而不是 C# 。不过它们不一样的地方多半是无关紧要的特征。总体上来说,不应从功能上选择 VB 或者 C# ,因为他们没有什么具体的差别。
性能上的考虑
性能是程序员最关心的问题。 VB 和 C# 都生成一样的 IL ,因此理论上说不会有性能的差异。但许多人为什么说 C# 的性能高于 VB.net 呢?这是因为 VB.net 支持即时编译,就是一边书写代码一边编译。这样可立刻发现语法错误,使调试变得更加容易。但是这样一来 VB 就需要随时浏览整个代码文件,并把临时数据储存。这造成 VB.net 生成的代码中常常具有冗余部分。但也不能就此下结论说 VB 比 C# 慢,当用户选择打开优化并且以 Release 方式编译工程,就能得到与 C# 一样简短快速的代码。
学习上的难度
这部分不仅仅初学者需要考虑,那些从现有开发工具转移到 .net 的开发人员也需要考虑。首先, VB 和 C# 都是非常简单的,对于初学者来说, VB 提供伸缩性更强的空间,因此比 C# 更加易于接受。但这只是相对而言, C# 对于初学者来说也不会有太多的困难。
对于使用 Visual Basic6 或其他版本的程序员来说。 VB.net 的语法显然要比 C# 更加接近 VB6 ,网上流传的 VB 与 VB.net 差别被过分夸大,使部分程序员退缩。其实 VB.net 增加的只是面向对象的思想,许多 VB 程序员不具备完善的面向对象编程开发经验,因此觉得 VB.net 难以接受,这是很容易克服的。想想看,即使你要使用 C# 不也得学习面向对象吗?至于有 C/C++/Java 经验的人, C# 是小菜一碟。刚才说过 C# 和 VB 实际上都很简单,所以不见得 VB 程序员学习 C# 就要比 C/C++ 程序员来的困难,反之亦然,有 C/C++ 经验的人也可以果断的选择 VB 。
移植现有代码
这一部分是程序员最头疼的部分。但对语言选择有决定性的意义。
从 VB6 移植代码的程序员,最佳选择就是 VB.net ,因为其他 .net 语言没有一种是与 VB 相似的。而且即使 VB6 的工程移植到 VB.net 非常困难,也有一个移植向导可以帮助你完成大部分工作。如果手工把他移植到 C# ,需要白白花费大量的时间。而且刚开始使用 C# 的 VB 程序员通常都会为 C# 缺少他们熟悉的函数而头疼。 VB.net 不会出现这种情况。
从 ASP 移植到 ASP.net ,首选语言仍然是 VB.net ,因为多数程序员使用的 ASP 语言是 VBScript ,只有 VB.net 最大程度地接近这种语言。
C# 对于移植代码似乎没有作用,了解 C# 的人都明白,把现有 C/C++ 代码放到 C# 中运行几乎是 100% 不能通过的。所以,如果需要移植 C/C++ 代码,最好使用 Visual C++.net 。他做到了最好的新旧结合。 C# 仅仅用于编写新的 .net 应用程序。
如果需要从 Java 移植代码, C# 可以选择。同时还有 J# 及其他一些 MS 提供的转换工具。
文档和资源方面的考虑
在 MSDN 文档中, C# 和 VB 是同等看待的。所有文档和例子都是有 VB 和 C# 两份的。因此,在寻求资源方面都不用担心。互联网上的资源, C# 要多于 VB ,特别是国内,有倾向于 C# 的潮流。但是 ASP.net 的资源 VB 较多。国内缺乏 VB.net 资源是影响 VB.net 推广的重要原因。但是在国外有很多非常成熟的 VB 技术,如掌上设备的开发技术。
代码风格和杂项问题
C# 书写的代码比 VB 平均短小 20% ,许多人不喜欢 VB 中过长的关键字。当然他们可以选择 C# 。但在开发环境中, VB 的自动完成功能比 C# 更完善,其实 30% 的代码都是自动补充的。因此,实际上 VB 程序员不会比 C# 多打多少字。但 VB 语言换行比 C# 麻烦,如果需要书写大量繁杂而长的代码,最好选择 C# 。 VB 的代码接近完整的英语,比 C# 更加易读。如果是初学者不妨选择 VB 。