当前位置: 首页 > news >正文

Visual Basic.net还是C# ——如何选择.net语言

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。

注:本文节选自http://zhidao.baidu.com/question/11273829.html

相关文章:

  • c语言解三元一次方程组_人教版初中数学七年级下册三元一次方程组的解法2公开课优质课课件教案视频...
  • 华章公司近期重点产品介绍
  • illegalstateexception是什么异常_Java面试题Iterator怎么使用?有什么特点?
  • 部门预算进行时
  • altium 去掉部分铺铜_【干货】一文读懂铜再生分类与工艺
  • Symbian OS编码诀窍之编码诀窍
  • python set函数是什么意思_python中set是什么意思
  • 博客时代
  • python3命令需要使用命令行开发者工具_Python创建命令行应用的工具 tools for command line application in python...
  • 使用 IBM Rational Portfolio Manager 进行业务驱动开发入门简介
  • sql count用法_SQL知识大全(二):SQL的基础知识你都掌握了吗?
  • ruby,java的劲敌
  • python123查找指定字符_Python语法速查:字符串格式简单处理、子串查找与判断方法?...
  • python xlwt模块使用_(转)Python中xlrd和xlwt模块使用方法
  • Ruby创造的奇迹
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 77. Combinations
  • cookie和session
  • git 常用命令
  • Js基础知识(一) - 变量
  • leetcode-27. Remove Element
  • leetcode46 Permutation 排列组合
  • PHP 小技巧
  • React的组件模式
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 从重复到重用
  • - 概述 - 《设计模式(极简c++版)》
  • 聊聊flink的BlobWriter
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 如何选择开源的机器学习框架?
  • 使用API自动生成工具优化前端工作流
  • 数组的操作
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 小程序01:wepy框架整合iview webapp UI
  • 一道面试题引发的“血案”
  • Linux权限管理(week1_day5)--技术流ken
  • #include<初见C语言之指针(5)>
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (转) ns2/nam与nam实现相关的文件
  • (转)我也是一只IT小小鸟
  • .NET Core Web APi类库如何内嵌运行?
  • .NET 常见的偏门问题
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • /etc/fstab和/etc/mtab的区别
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [Android 13]Input系列--获取触摸窗口
  • [Android Pro] Notification的使用