VB.Net与C# 的语法比较

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

變數初始化

VB.NET 自動將全部的變數初始化成 0 或 nothing。C# 在你未初始化變數以前不许你用該變數。 ui

選擇性參數(Optional parameters)

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

静态方法的定义ci

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

    publicstaticvoid StaticMethod()it

    {io

        Console.WriteLine("不须要创建物件就能够呼叫");table

    }object

    PublicSharedSub ShareMethod()语法

        Console.WriteLine("能够不创建物件來呼叫函數")

    EndSub

 

Switch 和 Select Case 語法

在 C# 的 switch 語法讓你以某個值或語法跳到一個程式區塊。每一個區塊與一個常數值連結在一块儿。你能够使用多個常數值與 case 語法创建以下的程式碼

switch(i)

{

    case 4:

    case 5:

        break;

    case 6:

    case 7:

        break;

    default:

        break;

}

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

SelectCase i

    Case 4, 5

    Case 6 To 9

    CaseElse

EndSelect

不仅如此,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