vb.net和c#的區別

來源:互聯網
上載者:User
vb.net和c#的區別(csdn整理)

(2009-04-26 14:21:45)

標籤:

雜談
 

//全域層
VB支援Module,是一種全部成員都是靜態特殊類型
C#支援static class,和VB的Module類似;

VB的Imports語句可以把類的靜態成員匯入,而C#的using語句沒有這個功能
Imports System.Math

VB可以選擇變數是否必須聲明,以及類型是否必須指定(通過Option語句)
C#則預設是VB最嚴格的狀態

C#可以使用extern alias指定程式集的別名,並使用別名限定運算子::來解析類名衝突的兩個程式集
VB沒有這個功能,但可以用Global關鍵字獲得命名空間層級名稱衝突解析能力

C#可以指定friend 組件,VB不支援

//成員層
VB可以直接重寫Object.Finalize方法,而C#必須採用解構函式的文法

C#可以指定attribute的target以便清楚地放置attribute,而VB則通過角括弧的位置來決定,有時候寫不出某種C#可行的文法

VB能夠重載這些C#不支援的運算子:&, ^, Like, /
C#能夠重載這些VB不支援的運算子:++, --, !

VB中子類的建構函式,先調用父類的建構函式,然後才初始化子類的欄位
C#中子類的建構函式,先初始化子類的欄位,然後才調用父類的建構函式

VB的Implemnts語句可以為實現介面的方法改名,改變存取層級
C#不支援但是有一個顯式實現的文法可以幫忙

VB的函數重載,子類和父類的方法視為同級
C#的函數重載,子類優先於父類

VB的Main函數自動加<STAThread()>,可以改
 //繼續成員層
C#的自訂event可以修改add和remove的規則
VB的自訂Event除了C#的之外,還支援重載RaiseEvent語句的用法

VB的Event可以直接書寫Event參數,自動產生Delege類型
C#的event必須指定delegate類型

VB支援WithEvents/Handles靜態事件綁定文法,也支援AddHandler動態Binder 方法
C#的事件只支援使用+=動態綁定

VB的屬性(Property)可以帶參數
C#的屬性不能帶參數

儘管不支援手工定義,VB支援屬性按引用傳遞值,C#不支援

VB可以指定一個帶有參數的屬性為Default,於是支援索引文法
C#則必須把這個東西聲明為索引器,即this文法

VB允許方法帶有若干選擇性參數(Optional)可指定預設值
C#不允許

C#支援out參數,傳入前不需要初始化
VB不內建支援

C#支援類中使用fixed buffer,即固定大小的類似數組的成員
VB不支援

C#支援按照參數是否帶有ref/out進行函數重載
VB不支援這種重載

C#允許僅大小寫區分的兩個函數或變數存在
VB不區分大小寫,因此也不允許

(成員層一時想不起來了,呆會再想)
//函數層

VB支援局部Static變數
C#不支援

VB支援數組的最後一唯大小可變
C#的數組大小不能改變

VB的Try Catch語句支援Exit Try直接進入Finally
C#無類似語句

VB的Catch可以帶When子句,使用.NET的異常filter功能有選擇的進行捕獲
C#完全不支援這一功能

VB可以使用傳統的On Error方法,非結構化地處理異常
C#僅支援結構化

C#支援使用checked語句暫時開啟或關閉整數溢出檢查
VB僅支援整個項目層級處理

VB支援使用函數名作為返回變數,也支援Return
C#只支援Return

VB的Try, Using, For, For Each等語句支援使用前邊定義的變數
C#的對應語句只能在語句開始處定義

C#可以支援unsafe文法有限地支援指標和stack資料的訪問
VB不支援

C#支援yield return文法的迭代器產生
VB不支援

C#支援delegate語句就地產生支援closure的匿名方法
VB不支援

C#支援在委託與方法結合的過程中使用協變和反邊規則
VB則只能使用完全符合規則

VB和C#的迴圈和分支有若干次要差別

C#支援nullable類型的運算子跨類型支援
VB需要手工完成同樣功能

VB支援用執行個體訪問類的靜態成員
C#只支援類明訪問

VB支援按照非虛函數的規則,調用自身類型定義的一個虛函數
C#不支援這一功能
類庫層

VB有一個非常好用Microsoft.VisualBasic.dll,實現了許多協助函數,Application Framework應用程式架構,My命名空間等
C#只能望眼欲穿了……

C#以out/ref或者大小寫區分不同函數,這就是不符合CLS的。

VB的每個特性幾乎都是CLS相容的(即使是那些C#不支援的),在VB中使用不會從根本上影響到與C#的互動

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.