在VB.NET中,可以使用“Call”語(yǔ)句來(lái)調(diào)用另一個(gè)VB文件中的方法。使用“Call”語(yǔ)句,可以在一個(gè)VB文件中調(diào)用另一個(gè)VB文件中的方法,從而實(shí)現(xiàn)不同文件之間的調(diào)用。
鎮(zhèn)原ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!
首先,需要在調(diào)用方法的VB文件中聲明另一個(gè)VB文件中的方法,以便編譯器能夠識(shí)別該方法。聲明的方式如下:
Declare Sub 另一個(gè)VB文件中的方法名 Lib “另一個(gè)VB文件的路徑” ()
其中,另一個(gè)VB文件中的方法名是另一個(gè)VB文件中要調(diào)用的方法的名稱(chēng),另一個(gè)VB文件的路徑是另一個(gè)VB文件的完整路徑。
接下來(lái),就可以使用“Call”語(yǔ)句來(lái)調(diào)用另一個(gè)VB文件中的方法了,語(yǔ)句格式如下:
Call 另一個(gè)VB文件中的方法名 (參數(shù)1,參數(shù)2,……,參數(shù)n)
其中,另一個(gè)VB文件中的方法名是另一個(gè)VB文件中要調(diào)用的方法的名稱(chēng),參數(shù)1,參數(shù)2,……,參數(shù)n是傳遞給另一個(gè)VB文件中要調(diào)用的方法的參數(shù)。
最后,就可以在調(diào)用方法的VB文件中調(diào)用另一個(gè)VB文件中的方法了。通過(guò)以上步驟,就可以在VB.NET中實(shí)現(xiàn)一個(gè)VB文件調(diào)用另一個(gè)VB文件中的方法了。
在C#中有 靜態(tài)類(lèi) 的概念 自然里邊全部的方法都是靜態(tài)的 這意味著你可以直接通過(guò) 類(lèi)名 方法名 去調(diào)用(例如System的Math類(lèi)就是典型) 在VB NET中 沒(méi)有 靜態(tài)類(lèi) 的概念(當(dāng)然你可以用 單例模式 把構(gòu)造函數(shù)弄成Private的方式 其它方法都是靜態(tài)的)如果某些方法需要被其它地方頻繁使用 可以創(chuàng)建 模塊 在VB NET中一旦創(chuàng)建了模塊 其中任何方法 屬性或者變量都可以被其它地方引用 因此適合全局情況下頻繁交互的情況(比如初始化加載的參數(shù) 可能后續(xù)程序要使用)等
現(xiàn)在問(wèn)題在于 如果你把一個(gè)類(lèi)似以下的模塊代碼封裝成DLL類(lèi)庫(kù) 無(wú)論在C#或者是VB NET中都無(wú)法引用到其方法
Module A
Public Sub Test()
End Sub
End Module
或許你感到很奇怪——不是在VB NET中這樣定義一個(gè)Module就直接可以使用其內(nèi)部方法了么?為什么封裝成類(lèi)庫(kù)就不可以了呢?上網(wǎng)問(wèn)了一些人 眾說(shuō)紛紜 后來(lái)我在他人協(xié)助下終于成功解決了這個(gè)問(wèn)題——解決方法很簡(jiǎn)單——只要在Module前加Public
理由是 為了兼容C# VB NET由Module封裝成類(lèi)庫(kù)中這個(gè)模塊不再是 模塊 而是一個(gè)標(biāo)準(zhǔn)的類(lèi)了 如果這樣寫(xiě) 那么在 NET中被理解成(C#)
internal A
{
public void Test()
{
}
}
整個(gè)模塊變成Internal的了!當(dāng)然你到其它程序集中去引用就引用不到!而把類(lèi)庫(kù)中的Module的修飾符改為Public就可以了 這就是MSDN那位友人給我最好的提示
雖然這個(gè)提示不是令我太滿(mǎn)意(因?yàn)橐繴B NET中可以直接不通過(guò) 類(lèi)名 方式直接使用方法名) 但是這給了我很大的暗示 得出重要的結(jié)論
)VB NET中Module在制作成類(lèi)庫(kù)時(shí)候等同于VB NET中的類(lèi)的規(guī)則(里邊的方法都是靜態(tài)的) 默認(rèn)情況下是Friend(C#是internal)
)根據(jù)結(jié)論 那么我們知道引用該DLL類(lèi)庫(kù)的方法一定是 i)引用命名空間? ii)C#中直接 類(lèi)名 方法名 對(duì)于VB NET 直接可以引用到方法名
lishixinzhi/Article/program/net/201311/12502
調(diào)用過(guò)程,調(diào)用過(guò)程有諸多技巧,它們與過(guò)程的類(lèi)型、位置以及在應(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)用自行編寫(xiě)的函數(shù)過(guò)程的方法和調(diào)用 Visual Basic 內(nèi)部函數(shù)過(guò)程(例如 Abs)的方法一樣;即在表達(dá)式中寫(xiě)上它的名字。
'下面的語(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ò)程是在窗體模塊中、類(lèi)模塊中還是標(biāo)準(zhǔn)模塊中。
窗體中的過(guò)程
所有窗體模塊的外部調(diào)用必須指向包含此過(guò)程的窗體模塊。如果在窗體模塊 Form1 包含 SomeSub 過(guò)程,則可使用下面的語(yǔ)句調(diào)用 Form1 中的過(guò)程:
Call Form1.SomeSub(arguments)
類(lèi)模塊中的過(guò)程
與窗體中調(diào)用過(guò)程類(lèi)似,在類(lèi)模塊中調(diào)用過(guò)程要調(diào)用與過(guò)程一致并且指向類(lèi)實(shí)例的變量。例如,DemoClass 是類(lèi) Class1 的實(shí)例:
Dim DemoClass as New Class1
DemoClass.SomeSub
但是不同于窗體的是,在引用一個(gè)類(lèi)的實(shí)例時(shí),不能用類(lèi)名作限定符。必須首先聲明類(lèi)的實(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ò)程。