熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

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

2022-06-13   來源: .NET編程 

  //全局層

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

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

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

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

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

  C#可以指定友元程序集VB不支持

  //成員層

  VB可以直接重寫ObjectFinalize方法而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不區分大小寫因此也不允許

[]  []  


From:http://tw.wingwit.com/Article/program/net/201311/15509.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.