成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

c++vb.net的簡(jiǎn)單介紹

C語(yǔ)言轉(zhuǎn)換為VB.NET

Option Explicit On

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到紅安網(wǎng)站設(shè)計(jì)與紅安網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:成都做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋紅安地區(qū)。

Option Strict On

Imports System

Module Program

Sub Main()

Dim y,m,t As Integer

begin:

' 輸入數(shù)據(jù)時(shí)一行一個(gè)

y=CInt(Console.ReadLine())

m=CInt(Console.ReadLine())

t=CInt(Console.ReadLine())

If y

200 Then

Console.WriteLine("ERROR")

goto begin

End If

pr(y,m,t)

Console.Write("Press any key to continue . . . ")

Console.ReadKey(True)

End Sub

Function pr(y As Integer,m As Integer,t As Integer) As Integer

Dim ye,[Me],i As Integer

ye=CInt((m+t-2)/12+y)

[Me]=(m+t-2) Mod 12+1

End If

End Function

Function mday(y As Integer,m As Integer) As Integer

Dim day As Integer()={0,31,28,31,30,31,30,31,31,30,31,30,31}

Dim ad As I

C#與VB.net有什么不同呀?

都說(shuō)在.NET里,.NET framework和CLR是應(yīng)用運(yùn)行的基礎(chǔ)。那么VB.NET和C#是不是就完全一樣,只是語(yǔ)法不同嗎?

一、C#

--- 像VB一樣簡(jiǎn)單,像C++一樣強(qiáng)大的新語(yǔ)

C#是第一流的面向組件的語(yǔ)言

由 Turbo Pascal, Delphi, and Visual J++的首席設(shè)計(jì)師Anders Hejlsberg 傾心3年設(shè)計(jì)

所有的語(yǔ)言元素都是真正的對(duì)象

開(kāi)發(fā)強(qiáng)壯和可重用的軟件

所有的.NET Framework中的基類(lèi)庫(kù)(Base Class Library)都由C# 編寫(xiě)

二、VB.NET

--- 完全面向?qū)ο蟮腂ASIC語(yǔ)言

1.新語(yǔ)言特性

完全面向?qū)ο蟥C 繼承(Inheritance), 重載(overloading), 共享的成員, 結(jié)構(gòu)化異常處理

強(qiáng)壯的語(yǔ)言 – 嚴(yán)格的類(lèi)型檢查, 變量聲明時(shí)初始化,支持垃圾收集(Garbage collection)

強(qiáng)大 – 支持委托(Delegates), free threading,Variant 數(shù)據(jù)類(lèi)型被 Object 代替

2.與VB6一致的語(yǔ)法

三、2者的區(qū)別?

1.語(yǔ)法上的差異

例如循環(huán)的寫(xiě)法

VB.NET

For I = 1 To 10

‘ for loop

Next I

C#

For (i=1;i11;i++) {

// for loop

}

另外Visual Basic 對(duì)大小寫(xiě)不敏感,而C#是大小寫(xiě)敏感的。

2.C# 具有但 Visual Basic 不具有的特性

指針, 移位操作符, 內(nèi)嵌的文檔(XML)

重載操作符

3.Visual Basic具有但 C# 不具有的特性

更豐富的語(yǔ)法: Events, Try…Catch, Select…Case, 實(shí)現(xiàn) Interface

后期綁定(Late binding), 動(dòng)態(tài)數(shù)組, 模塊(modules), 可選參數(shù), 參數(shù)屬性(parameterized properties)

后臺(tái)編譯

C#與VB.net間移植的技巧

按理說(shuō),這兩種語(yǔ)言沒(méi)有什么移植的必要,因?yàn)樗麄兩傻拇a可以完全通用。但是如果一個(gè)工程基本上是VB寫(xiě)成的,卻需要少許已經(jīng)存在的C#過(guò)程,用組件并不是一種效率很高的辦法。就算是學(xué)習(xí)C#或VB,學(xué)會(huì)他們之間的移植可以雙倍的利用已經(jīng)存在的代碼(如好玩的Donkey.net就只有VB版)。

有人比較過(guò)這兩種語(yǔ)言,得出的結(jié)論是他們很相似。但即便是這樣,VB初學(xué)者看到諸如((Button)sender).Text=“啟動(dòng)”;之類(lèi)的語(yǔ)法不知道如何移植到VB,而C#初學(xué)者看到Handles Button1.Click等語(yǔ)法也會(huì)為移植而感到頭痛。下面就看看他們最難移植的部分:

1、Option語(yǔ)句。VB的Option語(yǔ)句可以打開(kāi)或關(guān)閉變量聲明檢查和類(lèi)型轉(zhuǎn)換檢查。尤其是Option Strict被關(guān)閉后,VB變成弱類(lèi)型語(yǔ)言,很多類(lèi)型轉(zhuǎn)換都是自動(dòng)的,移植到C#中會(huì)產(chǎn)生無(wú)數(shù)錯(cuò)誤。因此,如果要將帶有Option Strict Off語(yǔ)句的VB程序移植到C#,最好先在VB中將Option Strict打開(kāi),然后把所有類(lèi)型轉(zhuǎn)換出錯(cuò)的地方變成強(qiáng)類(lèi)型轉(zhuǎn)換,然后再進(jìn)行移植。

2、類(lèi)型轉(zhuǎn)換。VB提供了很多類(lèi)型轉(zhuǎn)換函數(shù)型運(yùn)算符,如CInt(),CSng(),CStr()等,在C#中只要用(int),(float),(String)即可。然而如果不是標(biāo)準(zhǔn)類(lèi)型,如下面的C#語(yǔ)句:

((System.Button)sender).Text=“啟動(dòng)”;

就要使用VB的函數(shù)型運(yùn)算符CType來(lái)實(shí)現(xiàn)。上面的代碼正確的移植方法是:

CType(sender,System.Button).Text=“啟動(dòng)”

千萬(wàn)不要使用某些人推薦的,將Option Strict關(guān)閉,然后用后期綁定調(diào)用sender對(duì)象的方法,這根本不符合程序移植不能改變本質(zhì)的要求。

3、修飾符和屬性標(biāo)簽。VB和C#的修飾符是完全對(duì)等存在的,但是拼寫(xiě)往往不同,給移植帶來(lái)了很多麻煩,尤其是表示相同意思的關(guān)鍵字從字面理解完全不同的時(shí)候。下面就給出了VB和C#對(duì)應(yīng)的關(guān)鍵字:

VB

C#

VB

C#

Inherits

:

Implements

:

MustInherit

abstract

NotInheritable

sealed

Overridable

virtual

NotOverridable

sealed

MustOverride

abstract

Overrides

override

[Overloads]

無(wú)

Shadows

new

Shared

static

Public

public

Protected

protected

Friend

internal

Protected Friend

protected internal

Private

private

Static

用別的方法實(shí)現(xiàn)

ByVal

無(wú)

ByRef

ref

Optional

無(wú)

ParamArray

params

無(wú)法實(shí)現(xiàn)

unsafe

無(wú)法實(shí)現(xiàn)

fixed

可以看出,VB的關(guān)鍵字比較長(zhǎng),而且使用上也比C#更加嚴(yán)格。從C#向VB移植的時(shí)候,要分外注意哪些VB有而C#沒(méi)有的關(guān)鍵字以及在C#拼寫(xiě)相同,在VB中拼寫(xiě)不同的關(guān)鍵字(如MustOverride和MustInherit)。有些關(guān)鍵字如unsafe,如果C#使用了他們,將無(wú)法移植到VB中。好在這些關(guān)鍵字在商業(yè)應(yīng)用中并不常用。

屬性標(biāo)簽在這兩種語(yǔ)言中非常的相似,移植上應(yīng)該沒(méi)有任何難度,只要知道在C#中用方括號(hào)[]表示屬性標(biāo)簽,而在VB中用的是尖括號(hào)。另外,如果要用名稱結(jié)合傳遞參數(shù),C#直接使用=號(hào),而VB使用:=(冒號(hào)和等號(hào))。

4、委派類(lèi)型。委派類(lèi)型就是安全的函數(shù)指針類(lèi)型。在C#中,難以分辨是函數(shù)指針在工作還是函數(shù)本身在工作,因?yàn)樗麄兊恼Z(yǔ)法相同。當(dāng)要為一個(gè)委派類(lèi)型的變量復(fù)制的時(shí)候,直接等于一個(gè)函數(shù)即可,如:

public delegate void FuncType(Object e)

...

FuncType func;

func=new FuncType(this.SampleFunction1);

//調(diào)用

func(something);

//換指向另外一個(gè)函數(shù)

func=this.SampleFunction2

然而VB中,委派類(lèi)型就像是一般的對(duì)象,有它的方法,與函數(shù)本身明顯不同。你不能將過(guò)程的名字直接賦給一個(gè)委派類(lèi)型的對(duì)象,而必須使用AddressOf運(yùn)算符,下面的例子就是上文C#程序的VB版,注意那些實(shí)現(xiàn)不同的地方:

Public Delegate Sub FuncType(ByVal eAs Object)

...

Dim func As FuncType

func=New FuncType(AddressOf Me.SampleFunc1)

‘調(diào)用

func.Invoke(something)

‘換指向另外一個(gè)函數(shù)

func=AddressOf Me.SampleFunction2

5、事件處理。這是兩種語(yǔ)言最大的差別之一,VB傳承以前版本強(qiáng)大的事件處理機(jī)制,許多語(yǔ)法都比C#更加靈活。好在無(wú)論什么情況,他們之間都是可以互相移植的。

對(duì)于事件定義,兩種語(yǔ)言都是一個(gè)委派類(lèi)型加一個(gè)事件屬性,如:

[C#]

public delegate void MyEventHandler(Object sender,EventArgs e);

public event MyEventHandler MyEvent;

[Visual Basic]

Public Delegate Sub MyEventHandler(ByVal sender As Object,ByVal eAs EventArgs)

Public Event MyEvent As MyEventHandler

VB還支持另外一種更加緊湊的定義方法,只有一條語(yǔ)句:

Public Event MyEvent(ByVal sender As Object,ByVal eAs EventArgs)

移植的時(shí)候,要把參數(shù)部分分離出來(lái),成為一個(gè)委派類(lèi)型,再按照普通方法定義事件即可。

關(guān)于事件響應(yīng),C#與Delphi等語(yǔ)言一樣,是動(dòng)態(tài)綁定事件過(guò)程的,其語(yǔ)法類(lèi)似于下:

internal MyClass myobj;

...

myobj=new MyClass();

...

myobj.MyEvent+=this.myobj_MyEvent;

...

protected void myobj_MyEvent(Object sender,EventArgs e)

{

//語(yǔ)句

}

可以看到,C#是利用運(yùn)算符連接事件過(guò)程和事件屬性的。之后,還可以用-=運(yùn)算符解除事件過(guò)程與事件屬性的綁定。VB不支持運(yùn)算符重載,但仍然支持這種動(dòng)態(tài)綁定的事件過(guò)程,方法是使用AddHandler和RemoveHandler關(guān)鍵字。如上面黑體部分可以移植為:

AddHandler myobj.MyEvent,AddressOf Me.myobj_MyEvent

解除綁定的語(yǔ)法與此類(lèi)似,只是關(guān)鍵字為RemoveHandler而已。一定不要忘記過(guò)程前面還有一個(gè)AddressOf關(guān)鍵字!

動(dòng)態(tài)綁定的事件過(guò)程工作起來(lái)比較慢,VB支持一種更快的靜態(tài)綁定事件過(guò)程。一旦為對(duì)象設(shè)置了靜態(tài)的事件過(guò)程,就不能解除綁定,一般大多數(shù)情況都是如此。語(yǔ)法如下:

‘定義變量時(shí)使用WithEvents關(guān)鍵字

Friend WithEvents myobj As MyClass

‘直接書(shū)寫(xiě)事件過(guò)程,注意Handles的語(yǔ)法:

Protected Sub myobj_MyEvent(ByVal sender As Object,ByVal eAs EventArgs)_

Handles myobj.MyEvent

‘語(yǔ)句

End Sub

它表示myobj_MyEvent這個(gè)過(guò)程僅僅響應(yīng)myobj.MyEvent這個(gè)過(guò)程。如果一個(gè)過(guò)程要響應(yīng)很多個(gè)事件,把他們列在Handles后面,用逗號(hào)隔開(kāi),如Handles Event1,Event2,...

遇到這種情況,要看清Handles后面的所有對(duì)象和事件,將它們一一改寫(xiě)成動(dòng)態(tài)綁定的語(yǔ)句:

Protected Sub XXX(...)Handles myobj1.MyEvent,myobj2.MyEvent

==

myobj1.MyEvent+=this.XXX;

myobj2.MyEvent+=this.XXX;

...

protected void XXX(...){}

當(dāng)事件比較多時(shí),C#顯著變得比較麻煩,幸好一個(gè)過(guò)程響應(yīng)一大堆事件的情況也不太多(不過(guò)我就編寫(xiě)過(guò)一個(gè)過(guò)程相應(yīng)8個(gè)事件,移植起來(lái)好麻煩!)。原則上說(shuō),將靜態(tài)事件過(guò)程移植為動(dòng)態(tài)事件過(guò)程并沒(méi)有完全遵守移植的規(guī)定,但我估計(jì)他們實(shí)現(xiàn)的原理不會(huì)相差太多,所以也不用擔(dān)心。

6、異常處理。VB支持兩種形式的異常,即.net框架的異常和VB自己的錯(cuò)誤號(hào)碼。而C#只支持第一種。用到VB自己的錯(cuò)誤號(hào)碼的程序幾乎無(wú)法移植到C#中,所以應(yīng)該盡量使用.net框架的異常,如下面VB語(yǔ)句:

Try

‘發(fā)生錯(cuò)誤的代碼

Catch When Err.Number=52

‘解決錯(cuò)誤的代碼

End Try

這段代碼無(wú)法直接移植到C#中,只有用Exception對(duì)象取代Err對(duì)象獲得異常信息,才能順利移植。另外VB的When語(yǔ)句帶給Try語(yǔ)句十分靈活的用法,必須用很高的技巧才能在C#中實(shí)現(xiàn),這就需要具體問(wèn)題具體分析了。

VB支持Exit Try語(yǔ)句,可以直接從Try塊或Catch塊跳轉(zhuǎn)到Finally塊。C#沒(méi)有提供類(lèi)似的語(yǔ)法,可以用以下技巧:

[Visual Basic]

Try

‘一些語(yǔ)句

Exit Try

Finally

‘一些語(yǔ)句

End Try

[C#]

try

{

//一些語(yǔ)句

goto__leave;

}

finally

{

//一些語(yǔ)句

}

__leave://別忘了這里還有哦!

總之是利用了finally塊無(wú)法跳過(guò)的特征,用goto語(yǔ)句模擬了Exit Try語(yǔ)句。

如果VB程序用的是VB特有的On Error GoTo語(yǔ)句實(shí)現(xiàn)的錯(cuò)誤處理,問(wèn)題就麻煩了。代碼可能在過(guò)程中上下跳躍,無(wú)法預(yù)料語(yǔ)句的執(zhí)行方式。這種代碼理解起來(lái)就頭痛,更不要說(shuō)移植了??傮w來(lái)說(shuō),把所有語(yǔ)句統(tǒng)統(tǒng)轉(zhuǎn)移到try塊中,然后用catch一一處理錯(cuò)誤。遇到要返回(Resume語(yǔ)句)的時(shí)候,只好Copy代碼了。反正不是一件容易的事情,慢慢改就是了。

7、模塊。VB支持模塊,C#不支持。但也沒(méi)有關(guān)系,只要在C#中制造一個(gè)abstract類(lèi),共享所有成員,就和模塊一樣了。當(dāng)然不能像VB一樣直接訪問(wèn)模塊中的成員,需要用到“類(lèi)名.成員名”的用法。

8、接口。C#在接口方面也沒(méi)有VB強(qiáng)大(怎么這么重要的功能也不做得好一點(diǎn)?),VB采用Implements語(yǔ)句結(jié)合接口的成員和類(lèi)的實(shí)現(xiàn)成員,而C#是用名稱結(jié)合。因此VB就可以隨便修改實(shí)現(xiàn)成員的訪問(wèn)級(jí)別和名稱,而C#就不能改名稱。將C#移植為VB時(shí),最好利用VB.net編輯器直接實(shí)現(xiàn)接口,比較簡(jiǎn)單。把VB移植為C#時(shí),就必須把改過(guò)的名字都改回來(lái),遇到名字沖突就更討厭了(這時(shí)候我?guī)缀醪幌朐僖浦矠镃#了)。給一個(gè)例子:

[Visual Basic]

Public Class Class1:Implements IMyInterface

Public Sub DoSth()Implements IMyInterface.Method1

End Sub

End Class

[C#]

public class Class1:IMyInterface

{

public void Method1()

{

}

}

9、運(yùn)算符重載。這會(huì)遇到VB頭痛了,既然VB不支持運(yùn)算符重載,那么就必須用子程序和函數(shù)來(lái)模擬運(yùn)算符。比如建立Plus和Minus方法模擬+和-的運(yùn)算。當(dāng)然還是有很多情況(比如遇上了explicit和implicit語(yǔ)句)就真的沒(méi)有辦法了,只好不移植了。運(yùn)算符重載是一個(gè)很不錯(cuò)的功能,它能使很多操作簡(jiǎn)單地完成,如果VB支持它,就真的是完美語(yǔ)言了。

VB.net 和C#.net 各有什么優(yōu)缺點(diǎn)

C#.net優(yōu)點(diǎn):

運(yùn)算符重載。不安全代碼(指針和固定內(nèi)存區(qū))、?無(wú)符號(hào)整數(shù)、移位運(yùn)算。

VB的優(yōu)點(diǎn):?

即時(shí)編譯、靜態(tài)事件綁定、條件異常捕獲、COM兼容類(lèi)、寬松的類(lèi)型檢查和變量聲明、Visual Basic Runtime庫(kù)、可選參數(shù)、帶參數(shù)屬性、模塊等語(yǔ)言特征、動(dòng)態(tài)數(shù)組。

通過(guò)VB.NET開(kāi)發(fā)好的程序絕對(duì)沒(méi)有問(wèn)題(包括Direct X游戲開(kāi)發(fā))。雖然VB.NET的資料少,但是只要C#支持的VB.NET都支持(大體上這樣,因?yàn)槎家?jīng)過(guò)MSIL中間環(huán)節(jié)。除了指針之類(lèi)的VB.NET不支持C#支持,但是沒(méi)有多大實(shí)際用處)。

vb.net的資料以英文資料居多(只有英文資料才有看頭,中國(guó)的沒(méi)有什么好資料),得看看英文水平過(guò)不過(guò)關(guān)。還有VB.NET的ide也比C#的IDE好得多,代碼看得也舒服。(C#的大括號(hào){}太煩人)。

至于VB6對(duì)C的幫助,只是理解上會(huì)容易一些,其它用處不大。有VB6的基礎(chǔ)學(xué)VBNET會(huì)方便一些,但是并不是會(huì)VB6就會(huì)VB.NET,它們差別也不小。

擴(kuò)展資料:

NET、C#和ASP.NET之間的區(qū)別 :

1、NET是一個(gè)平臺(tái),一個(gè)抽象的平臺(tái)的概念。

NET 平臺(tái)其本身實(shí)現(xiàn)的方式其實(shí)還是庫(kù),抽象層面上來(lái)看是一個(gè)平臺(tái)。

基本可以理解的NET核心就是NETFramwork。

NETFramework包括兩個(gè)關(guān)鍵組成元素:

a. CommonLanguageRuntime,公共語(yǔ)言運(yùn)行時(shí)(CLR0)-提供內(nèi)在管理,代碼安全性檢測(cè)等功能。

b. NETFrameworkClassLibrary,.NET 框架類(lèi)庫(kù)(FLC)-提供大量應(yīng)用類(lèi)庫(kù),提高開(kāi)發(fā)效率。

學(xué)習(xí)NET Framework 是所有.NET開(kāi)發(fā)人員都必須的,否則開(kāi)發(fā)NET程序永遠(yuǎn)都是停留在‘外功’的招式,NETramework 是NET開(kāi)發(fā)高手的‘內(nèi)功’修行之一。

2、C#是一個(gè)程序設(shè)計(jì)語(yǔ)言,僅僅是一個(gè)語(yǔ)言。

程序設(shè)計(jì)語(yǔ)言僅僅是為了方便開(kāi)發(fā)人員和計(jì)算機(jī)溝通的工具,雖然 C#語(yǔ)法相對(duì) C 和?C+要多一些,但是相對(duì)來(lái)看 C#語(yǔ)法都比較固定,這樣使用起來(lái)卻都很容易。我認(rèn)可一位朋友說(shuō)的,C#的語(yǔ)法更嚴(yán)謹(jǐn)!

這里回過(guò)來(lái)看看NET和C#的關(guān)系,不得不提的是NET程序的執(zhí)行過(guò)程。

C#符合NETCLR 中的公共語(yǔ)言運(yùn)行規(guī)范。CLS:commonlanguagespecification,當(dāng)然所有的NET Language 都是符合這個(gè)規(guī)范的例如:VB.NET、XAML 和 C++/CL等等。

C#需要符合NETCLS,是因?yàn)镹ETCLR和JAVA虛擬機(jī)類(lèi)似,有一個(gè)中間語(yǔ)言共機(jī)器來(lái)執(zhí)行。所有不同語(yǔ)言的.NET代碼在執(zhí)行前會(huì)被編譯成同樣的中間語(yǔ)言(MSIL),所以所有NET 支持語(yǔ)言都必須符合符合CLS 規(guī)范。

P.S:如果做.NET3.0XAML開(kāi)發(fā)的朋友,可以嘗試下ildasm.exe看看XAML的應(yīng)用程序,會(huì)發(fā)現(xiàn)原來(lái) XAML其實(shí)很簡(jiǎn)單。

3、ASP.NET是一個(gè)網(wǎng)站開(kāi)發(fā)的技術(shù),僅僅是.NET框架中的一個(gè)應(yīng)用模型。

用微軟公司ASP.NET快速入門(mén)中的一句話來(lái)解釋,ASP.NET是用于生成基于Web的應(yīng)用程序的內(nèi)容豐富的編程框架。

ASP.net 和C#的區(qū)別:

編寫(xiě)asp.net通常包括兩部分的代碼:網(wǎng)頁(yè)層和后臺(tái)處理層,網(wǎng)頁(yè)就是用標(biāo)記語(yǔ)言來(lái)寫(xiě)的,而網(wǎng)頁(yè)對(duì)應(yīng)的后臺(tái)處理程序則需要.net語(yǔ)言來(lái)完成,目前主要是采用c#和vb.net。

可以說(shuō)整個(gè)的asp.net網(wǎng)站通過(guò)c#或者vb.net來(lái)實(shí)現(xiàn)。而c#則是ms .netframework的主要語(yǔ)言,可以用在網(wǎng)站,桌面應(yīng)用等方面??梢运闶且环N比較流行的編程語(yǔ)言。

.NET語(yǔ)言的選擇,C#,VB.Net哪個(gè)更有前途?

Visual Basic.net還是C#

——如何選擇.net語(yǔ)言

在.net中,如何選擇VB或C#?這似乎已經(jīng)爭(zhēng)論了很久。很多人盲目選擇,也產(chǎn)生了許多流言和錯(cuò)誤。本文將從以下方面指導(dǎo)你選擇正確的開(kāi)發(fā)語(yǔ)言。

功能上的考慮

許多人認(rèn)為C#的功能比VB.net強(qiáng)大,或者C#更加適合.net等。其實(shí)這不是一兩句話能比較清楚的。C#的確有VB無(wú)法完成的功能,但VB也有C#無(wú)法完成的功能??偟膩?lái)說(shuō),對(duì)于.net開(kāi)發(fā),VB和C#沒(méi)有任何差別,都100%兼容于CLS。下面列出的是他們語(yǔ)言功能上的不同,這些僅僅是語(yǔ)言實(shí)現(xiàn)上的問(wèn)題,不會(huì)影響到生成的代碼。打*號(hào)的內(nèi)容與CLS不兼容。

C#有而VB沒(méi)有的功能:

1、 運(yùn)算符重載。*

2、 不安全代碼(指針和固定內(nèi)存區(qū))。*

3、 無(wú)符號(hào)整數(shù)。*

4、 移位運(yùn)算。

VB有而C#沒(méi)有的功能

1、 即時(shí)編譯。

2、 靜態(tài)事件綁定。

3、 條件異常捕獲。

4、 COM兼容類(lèi)。*

5、 寬松的類(lèi)型檢查和變量聲明。

6、 Visual Basic Runtime庫(kù)。

7、 可選參數(shù)、帶參數(shù)屬性、模塊等語(yǔ)言特征。*

8、 動(dòng)態(tài)數(shù)組。*

可見(jiàn),實(shí)際上功能更強(qiáng)大的是VB而不是C#。不過(guò)它們不一樣的地方多半是無(wú)關(guān)緊要的特征??傮w上來(lái)說(shuō),不應(yīng)從功能上選擇VB或者C#,因?yàn)樗麄儧](méi)有什么具體的差別。

性能上的考慮

性能是程序員最關(guān)心的問(wèn)題。VB和C#都生成一樣的IL,因此理論上說(shuō)不會(huì)有性能的差異。但許多人為什么說(shuō)C#的性能高于VB.net呢?這是因?yàn)閂B.net支持即時(shí)編譯,就是一邊書(shū)寫(xiě)代碼一邊編譯。這樣可立刻發(fā)現(xiàn)語(yǔ)法錯(cuò)誤,使調(diào)試變得更加容易。但是這樣一來(lái)VB就需要隨時(shí)瀏覽整個(gè)代碼文件,并把臨時(shí)數(shù)據(jù)儲(chǔ)存。這造成VB.net生成的代碼中常常具有冗余部分。但也不能就此下結(jié)論說(shuō)VB比C#慢,當(dāng)用戶選擇打開(kāi)優(yōu)化并且以Release方式編譯工程,就能得到與C#一樣簡(jiǎn)短快速的代碼。

學(xué)習(xí)上的難度

這部分不僅僅初學(xué)者需要考慮,那些從現(xiàn)有開(kāi)發(fā)工具轉(zhuǎn)移到.net的開(kāi)發(fā)人員也需要考慮。首先,VB和C#都是非常簡(jiǎn)單的,對(duì)于初學(xué)者來(lái)說(shuō),VB提供伸縮性更強(qiáng)的空間,因此比C#更加易于接受。但這只是相對(duì)而言,C#對(duì)于初學(xué)者來(lái)說(shuō)也不會(huì)有太多的困難。

對(duì)于使用Visual Basic6或其他版本的程序員來(lái)說(shuō)。VB.net的語(yǔ)法顯然要比C#更加接近VB6,網(wǎng)上流傳的VB與VB.net差別被過(guò)分夸大,使部分程序員退縮。其實(shí)VB.net增加的只是面向?qū)ο蟮乃枷?,許多VB程序員不具備完善的面向?qū)ο缶幊涕_(kāi)發(fā)經(jīng)驗(yàn),因此覺(jué)得VB.net難以接受,這是很容易克服的。想想看,即使你要使用C#不也得學(xué)習(xí)面向?qū)ο髥??至于有C/C++/Java經(jīng)驗(yàn)的人,C#是小菜一碟。剛才說(shuō)過(guò)C#和VB實(shí)際上都很簡(jiǎn)單,所以不見(jiàn)得VB程序員學(xué)習(xí)C#就要比C/C++程序員來(lái)的困難,反之亦然,有C/C++經(jīng)驗(yàn)的人也可以果斷的選擇VB。

移植現(xiàn)有代碼

這一部分是程序員最頭疼的部分。但對(duì)語(yǔ)言選擇有決定性的意義。

從VB6移植代碼的程序員,最佳選擇就是VB.net,因?yàn)槠渌?net語(yǔ)言沒(méi)有一種是與VB相似的。而且即使VB6的工程移植到VB.net非常困難,也有一個(gè)移植向?qū)Э梢詭椭阃瓿纱蟛糠止ぷ?。如果手工把他移植到C#,需要白白花費(fèi)大量的時(shí)間。而且剛開(kāi)始使用C#的VB程序員通常都會(huì)為C#缺少他們熟悉的函數(shù)而頭疼。VB.net不會(huì)出現(xiàn)這種情況。

從ASP移植到ASP.net,首選語(yǔ)言仍然是VB.net,因?yàn)槎鄶?shù)程序員使用的ASP語(yǔ)言是VBScript,只有VB.net最大程度地接近這種語(yǔ)言。

C#對(duì)于移植代碼似乎沒(méi)有作用,了解C#的人都明白,把現(xiàn)有C/C++代碼放到C#中運(yùn)行幾乎是100%不能通過(guò)的。所以,如果需要移植C/C++代碼,最好使用Visual C++.net。他做到了最好的新舊結(jié)合。C#僅僅用于編寫(xiě)新的.net應(yīng)用程序。

如果需要從Java移植代碼,C#可以選擇。同時(shí)還有J#及其他一些MS提供的轉(zhuǎn)換工具。

文檔和資源方面的考慮

在MSDN文檔中,C#和VB是同等看待的。所有文檔和例子都是有VB和C#兩份的。因此,在尋求資源方面都不用擔(dān)心?;ヂ?lián)網(wǎng)上的資源,C#要多于VB,特別是國(guó)內(nèi),有傾向于C#的潮流。但是ASP.net的資源VB較多。國(guó)內(nèi)缺乏VB.net資源是影響VB.net推廣的重要原因。但是在國(guó)外有很多非常成熟的VB技術(shù),如掌上設(shè)備的開(kāi)發(fā)技術(shù)。

代碼風(fēng)格和雜項(xiàng)問(wèn)題

C#書(shū)寫(xiě)的代碼比VB平均短小20%,許多人不喜歡VB中過(guò)長(zhǎng)的關(guān)鍵字。當(dāng)然他們可以選擇C#。但在開(kāi)發(fā)環(huán)境中,VB的自動(dòng)完成功能比C#更完善,其實(shí)30%的代碼都是自動(dòng)補(bǔ)充的。因此,實(shí)際上VB程序員不會(huì)比C#多打多少字。但VB語(yǔ)言換行比C#麻煩,如果需要書(shū)寫(xiě)大量繁雜而長(zhǎng)的代碼,最好選擇C#。VB的代碼接近完整的英語(yǔ),比C#更加易讀。如果是初學(xué)者不妨選擇VB。

分享標(biāo)題:c++vb.net的簡(jiǎn)單介紹
瀏覽地址:http://jinyejixie.com/article24/dopscce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、外貿(mào)建站營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站維護(hù)響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
夏津县| 周宁县| 高邮市| 英德市| 丹寨县| 巴塘县| 郯城县| 全椒县| 手机| 九龙县| 泰兴市| 白河县| 海门市| 怀仁县| 长沙市| 威宁| 南康市| 肥乡县| 周宁县| 永丰县| 南阳市| 大悟县| 合山市| 从江县| 富平县| 陕西省| 水城县| 神农架林区| 南涧| 昌平区| 吐鲁番市| 杭锦旗| 确山县| 梁山县| 兴和县| 新龙县| 全椒县| 雷山县| 平潭县| 宜宾市| 安图县|