成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

VB.NET和C#逐層橫向對比

開發 后端
本文將從層的角度來對VB.NET和C#進行橫向對比,很多人可能到現在還對兩者的區別比較模糊,希望看過本文后能對大家有所幫助。

//全局層

VB支持Module,是一種全部成員都是靜態的特殊類型

C#支持static class,和VB的Module類似;

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

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

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

C#可以指定友元程序集,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函數自動加,可以改



 //繼續成員層

C#的自定義event可以修改add和remove的規則

VB的自定義Event除了C#的之外,還支持重載RaiseEvent語句的用法


VB的Event可以直接書寫Event參數,自動生成Delege類型

C#的event必須指定delegate類型


VB支持WithEvents/Handles靜態事件綁定語法,也支持AddHandler動態綁定方法

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#的交互

【編輯推薦】

  1. 簡述用C#實現優先隊列方法
  2. 橫向技術分析C#、C++和Java優劣
  3. 詳解C#編程中的反射機制與方法
責任編輯:彭凡 來源: 51CTO.com
相關推薦

2009-09-07 15:04:07

2009-08-18 16:57:24

VB.NET和C#

2009-11-02 16:47:18

VB.NET C#

2009-06-12 09:22:44

VB.NET類型C#

2009-11-03 14:13:23

VB.NET C#

2009-07-28 17:03:55

ASP.NET VB.

2009-10-29 14:02:24

VB和VB.NET比較

2009-10-23 12:53:25

VB.NET語言

2009-11-02 17:15:42

C#轉換為VB.NET

2009-11-02 17:38:56

VB.NET與C#

2009-07-06 11:00:56

.NET 4.0新特性.NET

2009-08-13 14:52:21

.NET性能誤區C#和VB.NET

2009-10-14 14:19:00

VB.NET創建表示層

2009-11-02 17:12:01

VB和VB.NET

2009-02-10 09:03:59

動態語言CLRVB.NET

2009-10-26 09:50:11

C#與VB.NET

2009-10-27 13:45:32

VB.NET C#區別

2009-10-30 14:21:00

VB.NET開發語言

2010-01-12 14:51:18

VB.NET業務層

2009-08-28 15:35:31

C#與VB.net
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黑人精品| 四虎影院在线播放 | www久| 99视频久| 一级片在线播放 | av片网| 国产精品日韩在线观看 | 黑人中文字幕一区二区三区 | 日本在线免费视频 | 国产成人在线视频 | 九九亚洲 | 国产成人麻豆免费观看 | 久草福利 | 成人在线观看免费视频 | 一区二区在线 | 免费看一区二区三区 | 日韩中文字幕在线免费 | 国产亚洲精品美女久久久久久久久久 | 久久免费资源 | 欧美一级全黄 | 亚洲一区免费视频 | 美女天天操 | 99久久婷婷国产综合精品电影 | 国产精品久久久久久久久久久免费看 | 久久久999精品 | 国产精品久久久久久久久久免费看 | 欧美成年黄网站色视频 | 波多野结衣一区二区三区在线观看 | 中文字幕亚洲精品 | 国产一区精品 | 成人欧美一区二区三区在线播放 | 我我色综合 | 欧美专区在线 | 久久久精彩视频 | 午夜影院在线观看版 | 精品乱人伦一区二区三区 | 超碰av人人 | 一区二区国产精品 | 国产一二三视频在线观看 | 国产成人精品久久二区二区91 | 久久av资源网 |