C#.net優(yōu)點(diǎn):
網(wǎng)站設(shè)計(jì)、網(wǎng)站制作服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠(chéng)為客戶提供服務(wù)是我們的理念。創(chuàng)新互聯(lián)公司把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來(lái)開發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!
運(yùn)算符重載。不安全代碼(指針和固定內(nèi)存區(qū))、?無(wú)符號(hào)整數(shù)、移位運(yùn)算。
VB的優(yōu)點(diǎn):?
即時(shí)編譯、靜態(tài)事件綁定、條件異常捕獲、COM兼容類、寬松的類型檢查和變量聲明、Visual Basic Runtime庫(kù)、可選參數(shù)、帶參數(shù)屬性、模塊等語(yǔ)言特征、動(dòng)態(tài)數(shù)組。
通過(guò)VB.NET開發(fā)好的程序絕對(duì)沒有問(wèn)題(包括Direct X游戲開發(fā))。雖然VB.NET的資料少,但是只要C#支持的VB.NET都支持(大體上這樣,因?yàn)槎家?jīng)過(guò)MSIL中間環(huán)節(jié)。除了指針之類的VB.NET不支持C#支持,但是沒有多大實(shí)際用處)。
vb.net的資料以英文資料居多(只有英文資料才有看頭,中國(guó)的沒有什么好資料),得看看英文水平過(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 框架類庫(kù)(FLC)-提供大量應(yīng)用類庫(kù),提高開發(fā)效率。
學(xué)習(xí)NET Framework 是所有.NET開發(fā)人員都必須的,否則開發(fā)NET程序永遠(yuǎn)都是停留在‘外功’的招式,NETramework 是NET開發(fā)高手的‘內(nèi)功’修行之一。
2、C#是一個(gè)程序設(shè)計(jì)語(yǔ)言,僅僅是一個(gè)語(yǔ)言。
程序設(shè)計(jì)語(yǔ)言僅僅是為了方便開發(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ī)類似,有一個(gè)中間語(yǔ)言共機(jī)器來(lái)執(zhí)行。所有不同語(yǔ)言的.NET代碼在執(zhí)行前會(huì)被編譯成同樣的中間語(yǔ)言(MSIL),所以所有NET 支持語(yǔ)言都必須符合符合CLS 規(guī)范。
P.S:如果做.NET3.0XAML開發(fā)的朋友,可以嘗試下ildasm.exe看看XAML的應(yīng)用程序,會(huì)發(fā)現(xiàn)原來(lái) XAML其實(shí)很簡(jiǎn)單。
3、ASP.NET是一個(gè)網(wǎng)站開發(fā)的技術(shù),僅僅是.NET框架中的一個(gè)應(yīng)用模型。
用微軟公司ASP.NET快速入門中的一句話來(lái)解釋,ASP.NET是用于生成基于Web的應(yīng)用程序的內(nèi)容豐富的編程框架。
ASP.net 和C#的區(qū)別:
編寫asp.net通常包括兩部分的代碼:網(wǎng)頁(yè)層和后臺(tái)處理層,網(wǎng)頁(yè)就是用標(biāo)記語(yǔ)言來(lái)寫的,而網(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ǔ)言。
都說(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ì)象
開發(fā)強(qiáng)壯和可重用的軟件
所有的.NET Framework中的基類庫(kù)(Base Class Library)都由C# 編寫
二、VB.NET
--- 完全面向?qū)ο蟮腂ASIC語(yǔ)言
1.新語(yǔ)言特性
完全面向?qū)ο蟥C 繼承(Inheritance), 重載(overloading), 共享的成員, 結(jié)構(gòu)化異常處理
強(qiáng)壯的語(yǔ)言 – 嚴(yán)格的類型檢查, 變量聲明時(shí)初始化,支持垃圾收集(Garbage collection)
強(qiáng)大 – 支持委托(Delegates), free threading,Variant 數(shù)據(jù)類型被 Object 代替
2.與VB6一致的語(yǔ)法
三、2者的區(qū)別?
1.語(yǔ)法上的差異
例如循環(huán)的寫法
VB.NET
For I = 1 To 10
‘ for loop
Next I
C#
For (i=1;i11;i++) {
// for loop
}
另外Visual Basic 對(duì)大小寫不敏感,而C#是大小寫敏感的。
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ǔ)言沒有什么移植的必要,因?yàn)樗麄兩傻拇a可以完全通用。但是如果一個(gè)工程基本上是VB寫成的,卻需要少許已經(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)”;之類的語(yǔ)法不知道如何移植到VB,而C#初學(xué)者看到Handles Button1.Click等語(yǔ)法也會(huì)為移植而感到頭痛。下面就看看他們最難移植的部分:
1、Option語(yǔ)句。VB的Option語(yǔ)句可以打開或關(guān)閉變量聲明檢查和類型轉(zhuǎn)換檢查。尤其是Option Strict被關(guān)閉后,VB變成弱類型語(yǔ)言,很多類型轉(zhuǎn)換都是自動(dòng)的,移植到C#中會(huì)產(chǎn)生無(wú)數(shù)錯(cuò)誤。因此,如果要將帶有Option Strict Off語(yǔ)句的VB程序移植到C#,最好先在VB中將Option Strict打開,然后把所有類型轉(zhuǎn)換出錯(cuò)的地方變成強(qiáng)類型轉(zhuǎn)換,然后再進(jìn)行移植。
2、類型轉(zhuǎn)換。VB提供了很多類型轉(zhuǎn)換函數(shù)型運(yùn)算符,如CInt(),CSng(),CStr()等,在C#中只要用(int),(float),(String)即可。然而如果不是標(biāo)準(zhǔn)類型,如下面的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ì)等存在的,但是拼寫往往不同,給移植帶來(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#沒有的關(guān)鍵字以及在C#拼寫相同,在VB中拼寫不同的關(guān)鍵字(如MustOverride和MustInherit)。有些關(guān)鍵字如unsafe,如果C#使用了他們,將無(wú)法移植到VB中。好在這些關(guān)鍵字在商業(yè)應(yīng)用中并不常用。
屬性標(biāo)簽在這兩種語(yǔ)言中非常的相似,移植上應(yīng)該沒有任何難度,只要知道在C#中用方括號(hào)[]表示屬性標(biāo)簽,而在VB中用的是尖括號(hào)。另外,如果要用名稱結(jié)合傳遞參數(shù),C#直接使用=號(hào),而VB使用:=(冒號(hào)和等號(hào))。
4、委派類型。委派類型就是安全的函數(shù)指針類型。在C#中,難以分辨是函數(shù)指針在工作還是函數(shù)本身在工作,因?yàn)樗麄兊恼Z(yǔ)法相同。當(dāng)要為一個(gè)委派類型的變量復(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中,委派類型就像是一般的對(duì)象,有它的方法,與函數(shù)本身明顯不同。你不能將過(guò)程的名字直接賦給一個(gè)委派類型的對(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è)委派類型加一個(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è)委派類型,再按照普通方法定義事件即可。
關(guān)于事件響應(yīng),C#與Delphi等語(yǔ)言一樣,是動(dòng)態(tài)綁定事件過(guò)程的,其語(yǔ)法類似于下:
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ǔ)法與此類似,只是關(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
‘直接書寫事件過(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)隔開,如Handles Event1,Event2,...
遇到這種情況,要看清Handles后面的所有對(duì)象和事件,將它們一一改寫成動(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ò)我就編寫過(guò)一個(gè)過(guò)程相應(yīng)8個(gè)事件,移植起來(lái)好麻煩?。?。原則上說(shuō),將靜態(tài)事件過(guò)程移植為動(dòng)態(tài)事件過(guò)程并沒有完全遵守移植的規(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#沒有提供類似的語(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ō)移植了。總體來(lái)說(shuō),把所有語(yǔ)句統(tǒng)統(tǒng)轉(zhuǎn)移到try塊中,然后用catch一一處理錯(cuò)誤。遇到要返回(Resume語(yǔ)句)的時(shí)候,只好Copy代碼了。反正不是一件容易的事情,慢慢改就是了。
7、模塊。VB支持模塊,C#不支持。但也沒有關(guān)系,只要在C#中制造一個(gè)abstract類,共享所有成員,就和模塊一樣了。當(dāng)然不能像VB一樣直接訪問(wèn)模塊中的成員,需要用到“類名.成員名”的用法。
8、接口。C#在接口方面也沒有VB強(qiáng)大(怎么這么重要的功能也不做得好一點(diǎn)?),VB采用Implements語(yǔ)句結(jié)合接口的成員和類的實(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ǔ)句)就真的沒有辦法了,只好不移植了。運(yùn)算符重載是一個(gè)很不錯(cuò)的功能,它能使很多操作簡(jiǎn)單地完成,如果VB支持它,就真的是完美語(yǔ)言了。
調(diào)用過(guò)程,調(diào)用過(guò)程有諸多技巧,它們與過(guò)程的類型、位置以及在應(yīng)用程序中的使用方式有關(guān)。下面說(shuō)明如何調(diào)用 Sub 過(guò)程和 Function 過(guò)程。
調(diào)用 Sub 過(guò)程
與 Sub 過(guò)程不同,在表達(dá)式中,Sub 過(guò)程不能用其名字調(diào)用。調(diào)用 Sub 過(guò)程的是一個(gè)獨(dú)立的語(yǔ)句。Sub 過(guò)程還有一點(diǎn)與函數(shù)不一樣,它不會(huì)用名字返回一個(gè)值。但是,與 Function過(guò)程一樣,Sub 過(guò)程也可以修改傳遞給它們的任何變量的值。
調(diào)用 Sub 過(guò)程有兩種方法:
'以下兩個(gè)語(yǔ)句都調(diào)用了名為 MyProc 的 Sub 過(guò)程。
Call MyProc (FirstArgument, SecondArgument)
MyProc FirstArgument, SecondArgument
注意,當(dāng)使用 Call 語(yǔ)法時(shí),參數(shù)必須在括號(hào)內(nèi)。若省略 Call 關(guān)鍵字,則也必須省略參數(shù)兩邊的括號(hào)
調(diào)用函數(shù)過(guò)程
通常,調(diào)用自行編寫的函數(shù)過(guò)程的方法和調(diào)用 Visual Basic 內(nèi)部函數(shù)過(guò)程(例如 Abs)的方法一樣;即在表達(dá)式中寫上它的名字。
'下面的語(yǔ)句都調(diào)用函數(shù) ToDec。
Print 10 * ToDec
X = ToDec
If ToDec = 10 Then Debug.Print "Out of Range"
X = AnotherFunction ( 10 * ToDec)
就像調(diào)用 Sub 過(guò)程那樣,也能調(diào)用函數(shù)。下面的語(yǔ)句都調(diào)用同一個(gè)函數(shù):
Call Year (Now)
Year Now
當(dāng)用這種方法調(diào)用函數(shù)時(shí),Visual Basic 放棄返回值。
調(diào)用其它模塊中的過(guò)程
在工程中的任何地方都能調(diào)用其它模塊中的公用過(guò)程??赡苄枰付ㄟ@樣的模塊,它包含正在調(diào)用的過(guò)程。調(diào)用其它模塊中的過(guò)程的各種技巧,取決于該過(guò)程是在窗體模塊中、類模塊中還是標(biāo)準(zhǔn)模塊中。
窗體中的過(guò)程
所有窗體模塊的外部調(diào)用必須指向包含此過(guò)程的窗體模塊。如果在窗體模塊 Form1 包含 SomeSub 過(guò)程,則可使用下面的語(yǔ)句調(diào)用 Form1 中的過(guò)程:
Call Form1.SomeSub(arguments)
類模塊中的過(guò)程
與窗體中調(diào)用過(guò)程類似,在類模塊中調(diào)用過(guò)程要調(diào)用與過(guò)程一致并且指向類實(shí)例的變量。例如,DemoClass 是類 Class1 的實(shí)例:
Dim DemoClass as New Class1
DemoClass.SomeSub
但是不同于窗體的是,在引用一個(gè)類的實(shí)例時(shí),不能用類名作限定符。必須首先聲明類的實(shí)例為對(duì)象變量(在這個(gè)例子中是 DemoClass )并用變量名引用它。
標(biāo)準(zhǔn)模塊中的過(guò)程
如果過(guò)程名是唯一的,則不必在調(diào)用時(shí)加模塊名。無(wú)論是在模塊內(nèi),還是在模塊外調(diào)用,結(jié)果總會(huì)引用這個(gè)唯一過(guò)程。如果過(guò)程僅出現(xiàn)在一個(gè)地方,這個(gè)過(guò)程就是唯一的。
如果兩個(gè)以上的模塊都包含同名的過(guò)程,那就有必要用模塊名來(lái)限定了。在同一模塊內(nèi)調(diào)用一個(gè)公共過(guò)程就會(huì)運(yùn)行該模塊內(nèi)的過(guò)程。例如,對(duì)于 Module1 和 Module2 中名為 CommonName 的過(guò)程,從 Module2 中調(diào)用 CommonName 則運(yùn)行 Module2 中的 CommonName 過(guò)程,而不是 Module1 中的 CommonName 過(guò)程。
從其它模塊調(diào)用公共過(guò)程名時(shí)必須指定那個(gè)模塊。例如,若在 Module1 中調(diào)用 Module2 中的 CommonName 過(guò)程,要用下面的語(yǔ)句:
Module2.CommonName (arguments)
Public ? 用于聲明對(duì)所有模塊中的所有其它過(guò)程都可以使用的過(guò)程。?
Private ?用于聲明只能在包含該聲明的模塊中使用的過(guò)程。
Call Mida("2.1458", A, B, C)
msgbox(A)
msgbox(B)
msgbox(C)
Sub Mida(Myi As integer,ByRef A As Integer, ByRef B As Integer, ByRef C As Integer)
msgbox(myi)
A=2
B= 14
C = 58
End Sub
以上是過(guò)程,如果是在模塊里就將Sub改用Function
------------------------------------------00000000000000000000000000++++++++++++++++++