VB.Net与C#的比较

最近看代码或写代码时,经常把VB与C#的基本语法搞混,为方便查看,特对其异同进行对比: 

變數初始化

VB.NET 自動將所有的變數初始化成 0 或 nothing。C# 在你未初始化變數之前不准你用該變數。 

選擇性參數(Optional parameters)

C# 不提供函數選擇性參數,但仍可以利用重载的方法,提供选择性参数

静态方法的定义

C# 和 VB.NET 都在 Class 支援靜態方法、屬性和 fields,C#中为Static,VB.NET 稱為 Shared,例如

    public static void StaticMethod()

    {

        Console.WriteLine("不需要建立物件就可以呼叫");

    }

    Public Shared Sub ShareMethod()

        Console.WriteLine("可以不建立物件來呼叫函數")

    End Sub

 

Switch 和 Select Case 語法

在 C# 的 switch 語法讓你以某個值或語法跳到一個程式區塊。每一個區塊與一個常數值連結在一起。你可以使用多個常數值與 case 語法建立如下的程式碼

switch(i)

{

    case 4:

    case 5:

        break;

    case 6:

    case 7:

        break;

    default:

        break;

}

VB 則讓你可以組合常數或更複雜的語法,如下

Select Case i

    Case 4, 5

    Case 6 To 9

    Case Else

End Select

不只如此,VB.NET 也讓你可以在 Select Case 語法中如同使用常數一般使用變數 

傳值或傳址呼叫

所有的 VB.NET 參數都要明確地利用 ByVal 和 ByRef 宣告,C# 的參數都是傳值,除非以 ref 關鍵字宣告。 

Virtual/Overridable 方法

C# 使用 Virtual 關鍵來宣告就算是參照到基礎 Class,但仍是呼叫到正確衍生類別的方法。以 override 宣告衍生的函數

VB.NET 使用 Overridable 關鍵字來宣告 virtual 函數,並需要使用 Overrides 關鍵字來宣告衍生的函數。

Abstract/MustInherit 方法

C# 用關鍵字 abstract 來標示需要由衍生 Class 來實现的方法,

VB.NET 使用 MustInherit 關鍵字來做同樣的標示(同時使用在 Class 和方法)。

Sealed/NoInheritable Classes

C# 用關鍵字 Sealed 來標示不可以被繼承的 Classs,VB.NET 以 NotInheritable 關鍵字來做相同的事。 

VB.NET 支援所有的 CLS 標準資料型態,C# 增加支援無正負號的資料型態。

下表列出兩個語言的基礎型態以及是否與 CLS 相容

VB.NET C# 與 CLS 相容
Object object Y
String string Y
  sbyte N
Short short Y
Integer int Y
Long long Y
Byte byte Y
  ushort N
  uint N
  ulong N
Single float Y
Double double Y
Boolean bool Y
Char char Y
Decimal decimal Y

转自:  http://dev.csdn.net/article/19/19408.shtm

你可能感兴趣的:(VB.NET)