选择VB.Net还是C#

面向对象的程序设计不可避免的将会出现在.Net的世界里。现在问题是,我们要选择哪一种语言呢?

  在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中,继承一个类,你可以这样写:

Code:
  1. PublicClassPerson
  2.   ...
  3.   EndClass
  4.   PublicClassEmployee
  5.   InheritsPerson
  6.   ...
  7.  EndClass

如果使用C#就必须:

Code:
  1. publicclassPerson
  2.  {
  3.   publicPerson(){
  4.   ...
  5.   }
  6.  }
  7.  publicclassEmployee:Person
  8.  {
  9.   publicEmployee(){
  10.   ...
  11.   }
  12.  }

如果你不仔细,您可能会忘记使用Employee : Person语法来继承Person类。

升级至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#拥有使用Unsigned数据类型的能力,同样的,在商业应用程序中它的使用并不广泛。
 

  移植之路

  从VB6.移植至VB.Net的道路并不平坦,但是我想对于想学好一门新程序语言的您来说,这份投资是值得的。在学习中,我推荐您学习面像对象的程序方式。你会经常在.Net的编程世界中经常使用到它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 -------------------------------- 数字类型的格式化 --------------------------------     固定格式参数:     General Number 普通数字,如可以用来去掉千位分隔号     format$("100,1
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关。意思是尽管你用诸如 Format(Now, "MM/dd/yyyy"),如果系统的设置格式区域语言的日期和时间格式分隔符是"-",那他还会显示为 MM-dd-yyyy     只有拼凑: <%response.write
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ‘======================================================== ‘以下事件
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没有认真去找这个方法呀。 https://blog.csdn.net/chzjxgd/article/details/6176325 金蝶K3 BOS的插件官方是用VB6编写的,如果  能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用V
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integer, y As Integer, subStr As String If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 2 Dim path As String, hash As String 3 For Each fil
  Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS Dim conString As String = "Server=localhost;Database=net2;Uid=root;Pwd=123456;" Dim con As New MySqlConnection
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop   Private Sub A1() Dim Sql As String Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim S As String   S = "Provider=OraOLEDB.Oracl
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class Form1 Dim A(254) As String    Function ping(ByVal IP As Integer) As String Dim IPAddress As String IPAddress = "10.0.
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5494084 Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Pr
今天碰到一个问题,登陆的时候,如果不需要验证手机号为空,则不去验证手机号 因为登陆的时候所有的验证信息都存放在一个数组里 Dim CheckUserInfo() As String ={UserBirthday, SecEmail, UserMob, UserSex, RealNameFirst, RealName, CheckCardID, CheckCardType, Contactemail
在VB6.0中,数据访问接口有三种: 1、ActiveX数据对象(ADO) 2、远程数据对象(RDO) 3、数据访问对象(DAO) 1.使用ADO(ActiveX Data Objec,ActiveX数据对象)连接SQL Server 1)使用ADO控件连接 使用ADO控件的ConnectionString属性就可以连接SQL Server,该属性包含一个由分号分隔的argument=value语
注:大家如果没有VB6.0的安装文件,可自行百度一下下载,一般文件大小在200M左右的均为完整版的软件,可以使用。   特别提示:安装此软件的时候最好退出360杀毒软件(包括360安全卫士,电脑管家等,如果电脑上有这些软件的话),因为现如今的360杀毒软件直接会对VB6.0软件误报,这样的话就可能会在安装过程中被误报阻止而导致安装失败,或者是安装后缺乏很多必须的组件(其它的杀毒软件或安全卫士之类的
Private Sub Form_Load() Call conndb End Sub Private Function conndb() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strCn, sql As String Dim db_host As String Dim db_user As String
  PPSM06S70:  Add  moddate  EDITSPRINTJOB:  MAX(TO_CHAR(ETRN.MODDATE, ‘yyyy/mm/dd/HH24:MI AM‘)) ACTUAL_SHIPDATE   4.Test Scenario (1) :Query SQL Test DN:8016578337 SELECT CTRN.TKCTID TRUCK_ID,        
  沒有出現CrystalReportViewer時,須安裝CRforVS_13_0. 新增1個數據集,新增1個數據表,添加二列,列名要和資料庫名一樣. 修改目標Framework 修改app.config, <startup >改成<startup useLegacyV2RuntimeActivationPolicy ="true">  CrystalReport1.rpt增加數據庫專家 在表單
Imports System.Threading Imports System Public Class Form1 Dim th1, th2 As Thread Public Sub Method1() Dim i As Integer For i = 1 To 100 If Me.Label1.BackColor =
Friend Const PROCESS_ALL_ACCESS = &H1F0FFF = 2035711 Friend Const PROCESS_VM_READ = &H10 Friend Const PROCESS_VM_WRITE = &H20 Friend Const PAGE_READONLY = &H2 Friend Const PAGE_READWRITE = &H4 Friend
以下代码随手写的 并没有大量测试 效率也有待提升 如果需要C#的请自行转换 Function SplitBytes(Data As Byte(), Delimiter As Byte()) As List(Of Byte()) Dim i = 0 Dim List As New List(Of Byte()) Dim bytes As New
Imports System.Data.SqlClient Public Class Form1 REM Public conn1 As SqlConnection = New SqlConnection("server=.; Integrated Security=False;Initial Catalog= mydatabase1; User ID= sa;password")