最近看代碼或寫代碼時,常常把VB與C#的基本語法搞混,爲方便查看,特對其異同進行對比: ide
VB.NET 自動將全部的變數初始化成 0 或 nothing。C# 在你未初始化變數以前不許你用該變數。 ui
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
在 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 關鍵字宣告。
C# 使用 Virtual 關鍵來宣告就算是參照到基礎 Class,但還是呼叫到正確衍生類別的方法。以 override 宣告衍生的函數
VB.NET 使用 Overridable 關鍵字來宣告 virtual 函數,並須要使用 Overrides 關鍵字來宣告衍生的函數。
C# 用關鍵字 abstract 來標示須要由衍生 Class 來實現的方法,
VB.NET 使用 MustInherit 關鍵字來作同樣的標示(同時使用在 Class 和方法)。
C# 用關鍵字 Sealed 來標示不能夠被繼承的 Classs,VB.NET 以 NotInheritable 關鍵字來作相同的事。
下表列出兩個語言的基礎型態以及是否與 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 |