您的位置:首页 > 编程语言 > VB

VB.net与C#的异同

2011-11-21 08:41 190 查看
转自:http://blog.sina.com.cn/s/blog_4b04dd4a010008wt.html

1.启动工程

[VB.net]

即可以从Main方法启动

又可以直接指定从某个窗体启动

[C#]

只能从Main方法启动

2.获取启动参数

[VB.net]

可以从Main的参数获取:Sub Main(cmd() As String)

可以用Command()方法获取

可以用System.Environent.GetCommandArgs()方法获取

[C#]

能从Main的参数获取:void Main(string[] cmd)

能用System.Environent.GetCommandArgs()方法获取

3.引用命名空间

[VB.net]

即可以在工程中设置全局引用

又可以在所有类代码文件中显式引用

[C#]

只能在代码种显式引用,且所有类代码文件均要书写引用段代码

4.引入命名空间的语法

[VB.net]

即可以分行书写:

Imports System

Imports System.net

Imports System.Drawing

又可以连行书写:

Imports System , System.net , System.Drawing

[C#]

只能分行书写

using System;

using System.net;

...

5.变量及其类型的约束

[VB.net]

即可以 强制要求变量在使用前声明(Option Explicit On)

又可以 不要求事先声明变量(Option Explicit Off)

即可以 强制要求严格的类型匹配(Option Strict On)

又可以 自动类型转换、自动反射(后期绑定)(Option Struct Off)

[C#]

只能使用前先声明、强制严格类型匹配

6.代码的语句分隔符

[VB.net]

VB的语句分隔符是冒号,可以由回车符替代,如下示例:

即可以

A += 1 : For I as Int32 = 100 To 0 Step -1 : MyCollection.Add(A) : Next

又可以

A += 1

For I As Int32 = 100 To 0 Step -1

MyCollection.Add(A)

Next

[C#]

语句分隔符只有分号一种,无论任何时候都不能省略分隔符(分号)

7.基本类型变量声明

[VB.net]

即可以Dim strA As String,又可以Dim strA$

即可以Dim iA As Integer,又可以Dim iA%

即可以Dim dblA As Double,又可以Dim dblA#

[C#]

只能

string strA;

int iA;

double dblA;

8.声明数组

[VB.net]

即可以 Dim bytTemp() As Byte

又可以 Dim bytTemp As Byte()

[C#]

只能

byte[] bytTemp;

9.声明立即实例化的变量

[VB.net]

即可以 Dim objColl As ArrayList = New ArrayList

又可以 Dim objColl As New ArrayList

[C#]

只能 ArrayList objColl = new ArrayList();

10.从过程中返回

[VB.net]

即可以直接 Return

又可以Exit (Sub,Function,Property ...)

[C#]

只能 return;

11.设置函数的返回值

[VB.net]

即可以 “Return 返回值”

又可以 “FunctionName = 返回值”

[C#]

只能 “Return 返回值;”

12.特殊条件的异常处理

[VB.net]

即可以

Catch ex As SomeException

If 条件 Then ...

End Try

又可以

Catch When 条件

...

End Try

[C#]

只能

catch(exception ex){

if(条件) ...

}

13.参数逐增的重载方法

[VB.net]

即可以

Sub (pa)

sub (Pa,Pb)

Sub (Pa,Pb,Pc)

又可以

Sub (Pa,Optional Pb, Optional Pc)

[C#]

只能

void(pa)

void(pa,pb)

void(pa,pb,pc)

14.委托的调用

[VB.net]

即可以 theDele

又可以 theDele()

又可以 theDele.Invoke()

[C#]

只能theDele();

15.事件的引发

[VB.net]

即可以RaiseEvent eventSpec(Me,e)

又可以If eventSpecevent IsNot Nothing then eventSpecevent(Me,e)

[C#]

只能 if(deleEvent != null) deleEvent(this,e);

16. 引用WIN32 API

[VB.net]

即可以Declare Function XXX Lib "user32.dll" (ByVal hWnd1 As ...

又可以

<DllImport("user32.dll",EntryPoint = "XXX")> Function XXX ...

[C#]

只能[DllImport("user32.dll", EntryPoint = "XXX"] external ...

17.事件的挂接

[VB.net]

即可以

Addhandler SomeObject.SomeEvent, Addressof SomeDelegate

Addhandler SomeObject.SomeEvent2, Addressof SomeDelegate

又可以Sub XXX () Handles SomeObject.SomeEvent,SomeObject.SomeEvent2

[C#]

只能

SomeObject.SomeEvent += XXX;

SomeObject.SomeEvent2 += XXX;

void XXX() {}

18.按名访问集合项

[VB.net]

即可以 Items("XXX")

又可以 Items!XXX

[C#]

只能 Items["XXX"]

19.全局共享(静态)类

[VB.net]

即可以 Module SomeClass

又可以

Class SomeClass

shared sub ...

[C#]

只能

class SomeClass{

static ...

}

20.关于VB特有函数

(1)设置字符串的某部分值

[VB.net]

即可以 Mid(strT, 2, 4) = "000"

又可以 strT = strT.Substring(0, 1) & "000" & strT.Substring(4)

[C#]

只能 strT = strT.Substring(0, 1) + "000" + strT.Substring(4);

(2)取右端字符串

[VB.net]

即可以 strT = Right(strT , 4)

又可以 strT = strT.SubString(strT.Length - 4)

[C#]

只能 strT = strT.SubString(strT.Length - 4);

(3)消息框

[VB.net]

即可以 MsgBox(strMsg, MsgBoxStyle.Information Or MsgBoxStyle.OKOnly, "Test")

又可以 MessageBox.Show(strMsg, "Test", MessageBoxButtons.OK, MessageBoxIcon.Information)

[C#]

只能 MessageBox.Show(strMsg, "Test", MessageBoxButtons.OK, MessageBoxIcon.Information);

(4)数值转换

[VB.net]

即可以CType("&H2B20", Integer)

又可以Val("&H2B20")

又可以Convert.ToInt32("0x2B20", 16)

又可以Int32.Parse("2B20", Globalization.NumberStyles.HexNumber)

[C#]

Convert.ToInt32("0x2B20", 16);

Int32.Parse("2B20", Globalization.NumberStyles.HexNumber);

21.调试断点的设置

[VB.net]

即可以在代码上设置断点

又可以 用Stop语句动态中断

[C#]

只能在代码上设置断点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: