真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

關(guān)于vb點(diǎn)虐 口齒清晰的信息

學(xué)VB還是VB點(diǎn)虐 好?

細(xì)說(shuō)VB.NET(上)

創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供甘南企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為甘南眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)的建站公司優(yōu)惠進(jìn)行中。

(作者:青蘋(píng)果工作室編譯 2001年03月07日 14:47)

微軟公司提出的.NET概念,正從各個(gè)方面滲入到我們的生活中。它將產(chǎn)生的作用,

誠(chéng)如一位業(yè)內(nèi)名家所描述的:“請(qǐng)忘掉你認(rèn)為你所知道的,.NET將改變一切”!既然如

此,無(wú)論是IT業(yè)內(nèi)人士、還是企業(yè)決策者,快速領(lǐng)會(huì)這個(gè)新概念的含義及深遠(yuǎn)影響,

都顯得非常必要。

概要

VB正在不斷地發(fā)展中,它具備了以前VB編程人員作夢(mèng)都想擁有的性能,想象一下你

將隨心所欲的利用這些性能,是不是很令人激動(dòng)?然而,這個(gè)計(jì)劃于2001年第四季度上

市銷(xiāo)售的VB版本可能會(huì)給你帶來(lái)些小麻煩,因?yàn)橐耆莆账枰粋€(gè)較長(zhǎng)的學(xué)習(xí)周期

,而且其中包括了一些微妙的變化,你可能在使用他們的時(shí)候出現(xiàn)錯(cuò)誤。

需要準(zhǔn)備的條件:建議獲得Visual Basic.NET beta 版,這些內(nèi)容對(duì)所有VB程序員

都是有用的。

Microsoft .NET平臺(tái)的涵蓋面很廣,而且很難預(yù)測(cè)它的真正意義。我們注意到,現(xiàn)

在有很多關(guān)于.NET的不正確的理解。因此在這篇文章里,我們將把給你一個(gè)VB.NET到底

是些什么的概念,從頭到尾說(shuō)一說(shuō)它是什么、它能干什么以及怎樣才能充分發(fā)揮它的優(yōu)

點(diǎn)。我們要特別地細(xì)看一下IDE的改變、面向?qū)ο筇卣?、底層結(jié)構(gòu)的改變、一些“現(xiàn)代化

”的語(yǔ)法以及包裝和分發(fā)方面的增強(qiáng)。我們將討論這些功能能為你做什么,解釋他們的

優(yōu)點(diǎn)與不足。由于這些改變是如此之大,而且涉及方方面面,因此希望這一篇文章能滿(mǎn)

足你全部的要求是不現(xiàn)實(shí)的,要了解這方面全部的知識(shí)請(qǐng)參閱有關(guān)文章和書(shū)籍。

Visual Basic.NET 和你現(xiàn)在所知的開(kāi)發(fā)工具完全不同,并且這個(gè)新版本會(huì)改變你的

未來(lái)。到底有多大不同?如果你覺(jué)得從VB3遷移到VB4是一個(gè)很大的變化,那這次VB.NET

會(huì)讓你感到震驚。這次升級(jí)與其說(shuō)是VB的一個(gè)新版本,還不如說(shuō)是遷移到一個(gè)新平臺(tái)上

,你所面臨的情況就和從DOS遷移到Windows差不多。

VB獲得了繼承能力

VB.NET預(yù)期擁有的第一新功能就是繼承能力。繼承是VB開(kāi)發(fā)者長(zhǎng)期以來(lái)要求得最多

的功能。判斷一下對(duì)繼承的要求是不是像早些時(shí)候?qū)Ρ镜鼗幾g器的要求一樣將是一件

很有意思的事,后者,當(dāng)Microsoft提供了一個(gè)以后,你就幾乎聽(tīng)不到多少這方面的言語(yǔ)

了。

Visual Basic現(xiàn)在是真正的面向?qū)ο笳Z(yǔ)言了。過(guò)去,你可以通過(guò)使用VB的界面繼承

性創(chuàng)建偽實(shí)現(xiàn)的對(duì)象繼承,但現(xiàn)在不必這樣做了。

Visual Basic.NET 現(xiàn)在提供大量面向?qū)ο蠊δ?,包括?yīng)用程序繼承,它允許你從其

它類(lèi)導(dǎo)出你想創(chuàng)建的類(lèi)。像在其它面向?qū)ο笳Z(yǔ)言里一樣,你能覆蓋基類(lèi)的方法和屬性,

并且能實(shí)現(xiàn)多態(tài)以創(chuàng)建健壯的、擴(kuò)展性好的組件。例如,假定你從基類(lèi) Crane里繼承產(chǎn)

生了一個(gè)ForkLift類(lèi),你能使用像下面的代碼覆蓋基類(lèi)里對(duì)Lift方法的默認(rèn)實(shí)現(xiàn):

Public Class ForkLift

Inherits Crane

Overrides Sub Lift(ByRef _

Height As Double)

Height = Height + 10

End Sub

End Class

VB.NET不僅能讓你覆蓋方法或?qū)傩?;它還能讓你重載方法。重載是定義同名、但使

用不同數(shù)據(jù)類(lèi)型的方法或?qū)傩缘哪芰?。例如,假定你有一個(gè)組件能對(duì)不同數(shù)據(jù)類(lèi)型的數(shù)

組進(jìn)行排序,你不需要三個(gè)(每種數(shù)據(jù)類(lèi)型一個(gè))不同名的方法;實(shí)際上你可以重載一個(gè)

方法名:

Overloads Sub SortArray(ByRef _

aValues()As String)

...

Overloads Sub SortArray(ByRef _

aValues() As Integer)

...

Overloads Sub SortArray(ByRef _

aValues() As Object)

另一個(gè)改變是:表單現(xiàn)在是類(lèi)模塊。這就是說(shuō)類(lèi)本身包含建立表單的所有“肥料”

的代碼。你可能想知道,為什么你不得不看到這些從前不用看的代碼,但這個(gè)改變同時(shí)

帶來(lái)強(qiáng)大的新功能,包括繼承這些表單的能力。Microsoft把這一技術(shù)稱(chēng)為可視化繼承。

假定你的對(duì)話框有一種標(biāo)準(zhǔn)的格式,例如在表單的一側(cè)有一行按鈕,并在角上有一個(gè)標(biāo)

識(shí),那么,通過(guò)可視化繼承你能創(chuàng)建一個(gè)表單模板(類(lèi)),并從這個(gè)基類(lèi)里導(dǎo)出所需的表

單。

一切都是對(duì)象

代碼復(fù)用簡(jiǎn)化了開(kāi)發(fā)過(guò)程,像實(shí)現(xiàn)和可視化繼承這樣的功能有利于更簡(jiǎn)單、更強(qiáng)大

的代碼復(fù)用。然而,代碼復(fù)用并不是到此為止。你能通過(guò)支持VB.NET的通用語(yǔ)言運(yùn)行庫(kù)

(Common Language Runtime - CLR)繼承在其它 VS.NET 語(yǔ)言里定義的類(lèi)。例如,你或別

人創(chuàng)建了一個(gè) C# 類(lèi),然后就能從 VB 里繼承它。

VB.NET 的面向?qū)ο竽芰U(kuò)展了語(yǔ)言本身的通路:一切都是對(duì)象。這意味著比在以前

的 VB 版本里,你獲得了更多的內(nèi)在功能,你將很少被迫使用 Windows API。例如,在

以前的 VB 版本里,你使用 LoadPicture 方法加載圖片并使用表單的 Line 方法(或較

快的 API) 畫(huà)線?,F(xiàn)在,你使用 System.Drawing 對(duì)象來(lái)創(chuàng)建并處理圖形。你可以使用

以下代碼在表單上顯示一幅圖片:

picshowpicture.Image = _

system.Drawing.Image.FromFile( _

"c:\test.bmp")

注意 VB.NET 的“一切都是對(duì)象”方式讓你的語(yǔ)句能用得更長(zhǎng)久。

考慮以下語(yǔ)句,它在一個(gè)圖形對(duì)象上畫(huà)一條黃綠色的線:

objgraphics.DrawLine(system.Drawing. _

Pens.Chartreuse, 0, 0, 100, 100)

這些長(zhǎng)長(zhǎng)的語(yǔ)句也有好處:改進(jìn)的功能、適應(yīng)性和易用性。從前,你要實(shí)現(xiàn)先進(jìn)的

功能就不得不在文檔中挖掘,經(jīng)常是不得不訴諸API。現(xiàn)在,相關(guān)的功能集符合邏輯地包

含在對(duì)象里。這種處理方式的另外一個(gè)好處就是:類(lèi)把相關(guān)的功能很好的組織了起來(lái)。

所以,瀏覽你感興趣的對(duì)象,發(fā)現(xiàn)它們做些什么實(shí)際上很有意思。

Visual Basic.NET 的面向?qū)ο蠊δ芴峁┝撕芏鄬?shí)在的好處。很多情況下,VB.NET

面向?qū)ο蟮谋举|(zhì)和實(shí)現(xiàn)的繼承性能幫助你比在以前的 VB 版本里更容易、更迅速地創(chuàng)建

特定類(lèi)型的功能。然而,你不一定要僅僅因?yàn)槟隳茏龅?,就使用?shí)現(xiàn)繼承性或其它 .NE

T 功能。VB.NET 的新功能使開(kāi)發(fā)許多類(lèi)型的應(yīng)用程序變得更簡(jiǎn)單!但是,就像使用所有

的語(yǔ)言能力一樣,你需要使用的是在特定場(chǎng)合下最適合的功能。

自由線程的危險(xiǎn)

對(duì)于自由線程可能需要特別給出警告。VB6允許你使用獨(dú)立的線程來(lái)創(chuàng)建多線程服務(wù)

器程序,但VB過(guò)去從來(lái)沒(méi)有讓你能創(chuàng)建自由線程的客戶(hù)端程序。VB.NET 改變了這一切。

現(xiàn)在,創(chuàng)建自由線程應(yīng)用程序幾乎成了最微不足道的事情。實(shí)際上,我估計(jì)那些沒(méi)有理

解其中的微妙差別,就在他們的應(yīng)用程序里添加了自由線程的程序員會(huì)遇到很多問(wèn)題。

只需要幾行代碼就能啟動(dòng)一個(gè)新線程:簡(jiǎn)單地將線索對(duì)象的地址傳遞給方法,方法本身

就會(huì)啟動(dòng)線程。這確實(shí)是很酷也很有用的東西,但你需要小心:這些功能適用于特定的

場(chǎng)合,確定哪些是適用的場(chǎng)合并且明智的使用這些工具則是你自己的事。許多開(kāi)發(fā)者使

用繼承性和自由線程時(shí)給自己找了不少麻煩,請(qǐng)不要讓這些發(fā)生在你身上。

可能大家討論得最多的 VB.NET 特征就是 CLR (通用語(yǔ)言運(yùn)行庫(kù)),VB 運(yùn)行在它的

頂層上。是 CLR 提供了 VB.NET 的許多關(guān)鍵功能。例如,CLR 使實(shí)現(xiàn)和跨語(yǔ)言繼承性以

及自由線程成為可能。

分發(fā)VB程序要求你同時(shí)分發(fā)VB的運(yùn)行庫(kù),在VB6里即是msvbvm60.dll。許多其它語(yǔ)言

也有類(lèi)似的要求,包括 C++ 和 Java。在Visual Studio.NET里,所有的Visual Studio

語(yǔ)言共享同一個(gè)運(yùn)行庫(kù):CLR。這里有幾個(gè)較大的變化,首先,所有的Visual Studio語(yǔ)

言現(xiàn)在都共享同一個(gè)IDE、同樣的表單引擎、同樣的異常處理機(jī)制等等。這意味著Visua

l Basic和像 C#這樣的語(yǔ)言擁有同等的地位,至少差不多是同等的。

回復(fù):

細(xì)說(shuō)VB.NET(中)

(作者:青蘋(píng)果工作室編譯 2001年03月07日 14:47)

易于反編譯的中間語(yǔ)言

無(wú)論你用VB、C#或其它.NET語(yǔ)言編寫(xiě)應(yīng)用程序,VS.NET代碼都編譯成為中間語(yǔ)言(I

L)。當(dāng)應(yīng)用程序運(yùn)行時(shí),一個(gè)即時(shí)編譯器(JITter)處理IL代碼并把它編譯成為機(jī)器語(yǔ)言

。這意味著在理論上可能為Windows以外的平臺(tái)創(chuàng)建.NET運(yùn)行庫(kù),但現(xiàn)在關(guān)于類(lèi)似的事情

還沒(méi)有任何官方消息。中間語(yǔ)言的一個(gè)缺陷是:它像VB5以前的VB版本一樣,容易被反編

譯。這種可能性使許多開(kāi)發(fā)者普遍地質(zhì)疑.NET架構(gòu)的安全性。

CLR在IL層次內(nèi)外影響代碼,對(duì)它的修改將使所有使用CLR的語(yǔ)言受益。然而,語(yǔ)言

只是和代碼如何被解釋為IL有關(guān),對(duì)特定語(yǔ)言的優(yōu)化可以根據(jù)特定語(yǔ)言的語(yǔ)法來(lái)編寫(xiě),

這樣在技術(shù)上就可能使.NET語(yǔ)言之間的性能差別很小。不管怎樣,大體上藍(lán)圖是美好的

。例如,CLR使VB的調(diào)試和監(jiān)測(cè)工具和C#的相應(yīng)工具相當(dāng),它做到了這一點(diǎn)因?yàn)樗鼈儽緛?lái)

就是相同的工具。

CLR提供不平行的跨語(yǔ)言集成,包括跨語(yǔ)言繼承代碼的能力。所有使用CLR的語(yǔ)言共

享一個(gè)通用類(lèi)型系統(tǒng),它使使用多種語(yǔ)言開(kāi)發(fā)應(yīng)用程序變得更簡(jiǎn)單。我不喜歡把 C API

聲明翻譯成VB里可以使用的形式,所以我很贊賞通用類(lèi)型系統(tǒng)帶來(lái)的好處。

在CLR中運(yùn)行的代碼被稱(chēng)為被管理代碼,被管理代碼使用的內(nèi)存完全由CLR來(lái)控制。

被管理代碼帶來(lái)很多好處,包括跨語(yǔ)言集成、跨語(yǔ)言異常處理和簡(jiǎn)化的部件相互作用模

型。Visual Basic被限制為只能以被管理代碼的方式工作,然而C#擁有跳到非被管理代

碼的能力(執(zhí)行到運(yùn)行庫(kù)之外),并能做像指針操作這類(lèi)事情。這是VB和C#不同等的情況

之一。這種能力到底有多重要取決于你想干什么。

CLR造成的體系結(jié)構(gòu)差別要比跨語(yǔ)言集成、共享功能和被管理代碼等深刻。首先,V

isual Studio.NET的支撐結(jié)構(gòu)不是 COM。另外,VB.NET里的所有東西,甚至字符串都是

對(duì)象。因?yàn)檫@些和其它一些原因,Microsoft改變了支撐結(jié)構(gòu)處理對(duì)象的方式。COM實(shí)現(xiàn)

了一個(gè)引用計(jì)數(shù)方案,這樣每次引用一個(gè)對(duì)象時(shí),計(jì)數(shù)器遞增。當(dāng)一個(gè)對(duì)象引用超出作

用域或被釋放時(shí),計(jì)數(shù)器遞減,當(dāng)引用計(jì)數(shù)減少到零時(shí)就終止這個(gè)對(duì)象。Microsoft聲稱(chēng)

在.NET架構(gòu)下引用計(jì)數(shù)的開(kāi)銷(xiāo)太大,以至于不能在 .NET中實(shí)現(xiàn)它,所以它放棄了引用計(jì)

數(shù)轉(zhuǎn)而使用垃圾收集。

垃圾收集需要新體系結(jié)構(gòu)

CLR垃圾收集器主要是監(jiān)視一個(gè)程序的資源,當(dāng)可用資源達(dá)到確定的閾值時(shí)尋找無(wú)用

的對(duì)象,并在發(fā)現(xiàn)它們的時(shí)候清除這些對(duì)象。垃圾收集的一大好處就是你不再需要擔(dān)心

大多數(shù)普通的循環(huán)引用,即子對(duì)象引用了父對(duì)象,然后父對(duì)象又引用了子對(duì)象。在引用

計(jì)數(shù)方案下,循環(huán)引用使兩個(gè)對(duì)象都不能被釋放和清除。然而,垃圾收集器會(huì)發(fā)現(xiàn)循環(huán)

引用并清除它們。這也意味著釋放對(duì)象的最后一個(gè)引用時(shí)不再需要立即清除對(duì)象。

垃圾收集的一個(gè)后果是:你再也不能指望一個(gè)類(lèi)的 Terminate 事件能在適當(dāng)?shù)臅r(shí)機(jī)

發(fā)出。實(shí)際上,如果線程被阻塞,可能根本就不會(huì)發(fā)出 Terminate 事件。和COM提供的

確定化終止相反,它被稱(chēng)為不確定的終止。缺乏確定化終止,以及因?yàn)槔占髦匦?/p>

安排并壓縮內(nèi)存從而不能使用指針的事實(shí),在新聞組里激發(fā)了一波激烈的辯論。我想這

些新限制可能會(huì)令你痛恨,因?yàn)槟阋揽看_定化終止;也可能你漠不關(guān)心,因?yàn)槟悴灰?/p>

賴(lài) Terminate 事件。垃圾收集并不是萬(wàn)靈藥,實(shí)現(xiàn)弱引用依然需要做一些考慮。

從引用計(jì)數(shù)到垃圾收集只是 Visual Studio.NET 的支撐結(jié)構(gòu)不是 COM 這個(gè)事實(shí)的

表象之一。你能在VB.NET中使用COM對(duì)象,比如說(shuō)ActiveX服務(wù)器或ActiveX控件。然而,

你必須通過(guò)包裝訪問(wèn)這些對(duì)象。任何時(shí)候聽(tīng)到“包裝”這個(gè)術(shù)語(yǔ),你應(yīng)該明白你面對(duì)著

性能損失,并且對(duì)象的行為可能有所不同。如果當(dāng)計(jì)劃移植一個(gè)使用了大量COM對(duì)象的工

程,就需要認(rèn)真地測(cè)試和計(jì)劃,可能需要重新規(guī)劃應(yīng)用程序的結(jié)構(gòu)才能移植成功。坦率

地說(shuō),你要有遭受挫折的準(zhǔn)備。還記得從VBX遷移到 OCX的過(guò)程嗎?我記得,我的精神病

醫(yī)生也記得。我很快就要再去看他了 ;-)

語(yǔ)言本身的變化要遠(yuǎn)遠(yuǎn)超過(guò)體系結(jié)構(gòu)的變化。大部分改變確有道理,但我并不認(rèn)為

所有的改變都是如此。以前版本的VB允許你以很多方法來(lái)做很多事,以至于統(tǒng)一的編碼

標(biāo)準(zhǔn)要么不存在要么就很難強(qiáng)加于人。Microsoft對(duì)VB做了大量的改變?yōu)榈木褪恰扒逦?/p>

這種語(yǔ)言。很多情況下,原來(lái)你有好幾種方法做一件事,現(xiàn)在就只有一種了。Billy Ho

llis 提供了語(yǔ)法變化的詳細(xì)列表,包括廢棄的關(guān)鍵字列表,但有些東西需要在這里重復(fù)

一下。

首先,向過(guò)程參數(shù)傳遞數(shù)據(jù)的默認(rèn)方法由引用(ByRef)變成了傳值(ByVal)。這個(gè)改

變主要是因?yàn)橐靡葌髦档娘L(fēng)險(xiǎn)大得多。它的風(fēng)險(xiǎn)主要是調(diào)用過(guò)程中的數(shù)據(jù)可能被無(wú)

意中篡改。你仍然能通過(guò)引用傳遞數(shù)據(jù),但這一改變使你需要修改新的默認(rèn)調(diào)用方法來(lái)

使用引用。

Set語(yǔ)句消失了

其次,Set 語(yǔ)句消失了。在 VB.NET 里如果你需要向變量傳遞一個(gè)對(duì)象引用,所需

要的只是一個(gè)等號(hào),對(duì)象被視為同其它值一樣。這很酷,但也有副作用:默認(rèn)屬性消失

了。例如,你不再能用這種方式引用一個(gè)屬性:

Text1 = "What, me worry?"

作為替代,你必須顯式地引用屬性:

Text1.Text = "What, me worry?"

也許一眼看來(lái)不需要這種改變,但確實(shí)必須去掉默認(rèn)屬性。例如,假定你有一個(gè)叫

objFoo的對(duì)象變量,不用Set語(yǔ)句,下面的語(yǔ)句所設(shè)置的引用就產(chǎn)生了歧義性:

objFoo = Text1

這條語(yǔ)句是應(yīng)該設(shè)置到Text1的引用,還是以Text1的Text屬性來(lái)填充objFoo?你不

能確定,編譯器也不能。拋棄Set語(yǔ)句同時(shí)要求拋棄默認(rèn)屬性。

有一個(gè)改變我不喜歡:你不再能在不同的作用域里聲明Property Get和Property S

et過(guò)程。注意 VB.NET 沒(méi)有 Property Let 語(yǔ)句:對(duì)象和數(shù)值都用 Property Set。這意

味著你不能用一個(gè) Friend Property Let 過(guò)程來(lái)對(duì)應(yīng)一個(gè) Public Property Get。用V

B建立組件時(shí)可能會(huì)有麻煩。許多組件開(kāi)發(fā)者創(chuàng)建 Friend Property Set 過(guò)程以使他們

的應(yīng)用程序能改變一個(gè)值,但提供 Public Property Get 過(guò)程以使他們的客戶(hù)程序能取

回值。我希望我能為這個(gè)改變找到一個(gè)合適的理由,可是我找不到。

Microsoft說(shuō)它力圖使語(yǔ)言保持清晰并使之現(xiàn)代化—大部分情況下它做得不錯(cuò)—但這

個(gè)作用域問(wèn)題和其它幾個(gè)問(wèn)題令人感到困惑。例如,While...Wend 很早以前就應(yīng)該消失

了,因?yàn)?Do...Loop 完成同樣的功能。然而,Microsoft 不僅沒(méi)能去掉 While...Wend

,還把它改成了 While...End While 來(lái)給自己找了更多的麻煩。真奇怪!

我最不喜歡的改變是:Microsoft改變了你已經(jīng)使用的數(shù)據(jù)類(lèi)型含義。在 .NET 里,

Integer 現(xiàn)在是 32 位,而 Long 變成了 64 位。我心存恐懼地想:開(kāi)發(fā)者 (包括我自

己) 會(huì)多么頻繁地使用錯(cuò)誤的變量啊。那個(gè)API到底是接受一個(gè)16位的 Integer還是32位

的?老天!我希望Microsoft重新考慮這個(gè)決定并使用新的變量類(lèi)型,比如Int32和Long

64。無(wú)論遷移到 VB.NET的移植工具是多么的好,它也不能改變開(kāi)發(fā)者的記憶。為什么要

逼著我們?cè)賹W(xué)一遍普通的數(shù)據(jù)類(lèi)型呢?

最后,最需要的一個(gè)改變是:VB.NET引入了 Option Strict 關(guān)鍵字,你可以使用它

來(lái)代替 Option Explicit。Option Strict 結(jié)束了萬(wàn)惡的類(lèi)型強(qiáng)制(tm),通過(guò)它VB樂(lè)于

讓你把一個(gè)數(shù)值賦值給一個(gè)字符串,然后像犯罪一樣做另一個(gè)操作。設(shè)置 Option Stri

ct 告訴 Visual Basic.NET 不要為你做任何類(lèi)型強(qiáng)制。注意 VB.NET 并不是徹底的控制

狂,它允許類(lèi)型向下轉(zhuǎn)換,但不允許向上。例如,不使用像 sngvariable = CSng(dblv

ariable) 這樣的語(yǔ)句進(jìn)行顯式類(lèi)型轉(zhuǎn)換,你就不能把聲明為 Single 的變量賦值給聲明

為 Double 的變量。因?yàn)檫@有丟失數(shù)據(jù)的風(fēng)險(xiǎn)。然而,你能不使用顯式類(lèi)型轉(zhuǎn)換就把聲

明為 Double 的變量賦值給聲明為 Single 的變量,因?yàn)檫@并沒(méi)有丟失數(shù)據(jù)的危險(xiǎn)。使

用 Option Strict 能幫助開(kāi)發(fā)者減少很多類(lèi)型錯(cuò)誤,包括那些很難調(diào)錯(cuò)的。但有一個(gè)附

加的缺陷:在工程里使用了 Option Strict 后,就不能進(jìn)行 后編聯(lián)了。

回復(fù):

細(xì)說(shuō)VB.NET(下)

(作者:青蘋(píng)果工作室編譯 2001年03月07日 14:47)

表單和新IDE面孔

Visual Basic.NET 的面向?qū)ο蠊δ芎軅ゴ?,但第一次啟?dòng) VB.NET 時(shí)還注意不到它

??赡苣阕⒁獾降牡谝患率撬?IDE。IDE看起來(lái)可能很熟悉,建立VS.NET IDE的團(tuán)隊(duì)

以前的工作是開(kāi)發(fā)VB的IDE,對(duì)IDE的增強(qiáng)借鑒了VB IDE的經(jīng)驗(yàn)。

同時(shí),IDE的改變遠(yuǎn)比外表顯示的深刻。所有.NET語(yǔ)言使用相同的IDE,并且IDE中的

新工具功能強(qiáng)大又易于理解。你能把任何一個(gè)設(shè)計(jì)窗口設(shè)置為自動(dòng)隱藏 (就像你能自動(dòng)

隱藏Windows任務(wù)欄那樣),這樣就大大地減少了混亂。主工作區(qū)域是一系列選項(xiàng)卡,這

意味著IDE不再同時(shí)顯式多個(gè)表單和代碼模塊。當(dāng)打開(kāi)對(duì)象的源代碼時(shí),IDE在它的主工

作區(qū)域?yàn)楣ぷ鞯膶?duì)象添加一個(gè)新的選項(xiàng)卡。

IDE還包括一個(gè)叫作任務(wù)表(Task List)的新窗口。它的內(nèi)容由IDE創(chuàng)建的項(xiàng)目組成。

例如,如果在試圖編譯一個(gè)工程時(shí)收到一個(gè)錯(cuò)誤,VB在任務(wù)表里創(chuàng)建一個(gè)項(xiàng)目來(lái)解釋這

個(gè)錯(cuò)誤。你能直接向任務(wù)表里添加項(xiàng)目,或者通過(guò)在代碼里以 "TODO:"開(kāi)始一個(gè)注釋行

,你可以在代碼位置和任務(wù)之間建立聯(lián)系。我喜歡Microsoft實(shí)現(xiàn)任務(wù)表的方式;在程序

出爐前,都需要完成些什么?估計(jì)它能幫我省掉很多時(shí)間和麻煩??吹剿鼤r(shí),你最容易

產(chǎn)生的一個(gè)想法就是:以前怎么就沒(méi)人想到它呢?

你能注意到的另一個(gè)變化就是:VB.NET的表單。Microsoft廢棄了舊的表單引擎而使

用Windows Form代替它。所有基于 CLR的語(yǔ)言都使用Windows Form引擎。相對(duì)于VB6的表

單引擎,它有幾個(gè)重要的改進(jìn)。例如,Windows Form讓你能創(chuàng)建能自動(dòng)調(diào)整組件尺寸的

表單,并允許將控件錨定在表單里的特定位置。換句話說(shuō),不再需要使用第三方控件就

能完成這些特殊任務(wù)。Windows Form還允許表演像透明表單這樣的很酷的技術(shù)。

過(guò)去,VB隱藏了建立表單的所有魔術(shù)。你使用IDE設(shè)計(jì)表單并把代碼添加到Initial

ize事件上,但你沒(méi)有手段來(lái)控制這兩點(diǎn)之間的過(guò)程?,F(xiàn)在,表單就是一個(gè)類(lèi),它包含用

來(lái)建立表單所有的代碼。我把這些代碼稱(chēng)為肥料代碼,因?yàn)榇蠖鄶?shù)開(kāi)發(fā)者希望遠(yuǎn)遠(yuǎn)離開(kāi)

它們,越遠(yuǎn)越好。要想可靠地弄壞你的程序,沒(méi)有比折騰這些代碼更好的辦法了。另一

方面,技術(shù)嫻熟的用戶(hù)可以通過(guò)這些代碼做很多很酷的事,因?yàn)樗屇隳茏叩絍B.NET表

單的幕后。要是你不想看到這些代碼你也能不看,因?yàn)樾麓a編輯器有展開(kāi)和折疊代碼

區(qū)的功能,并且這些肥料代碼是默認(rèn)折疊的。代碼編輯器還有幾個(gè)很酷的新功能。例如

,現(xiàn)在它自動(dòng)為你縮排所有代碼(而且還干得不錯(cuò)),它還有內(nèi)置的顯示行號(hào)功能。

創(chuàng)建編譯的服務(wù)器端代碼

除了新的Windows Form引擎,.NET還包括一個(gè)為創(chuàng)建Web表單而特別設(shè)計(jì)的表單引擎

。這些被稱(chēng)為Web Form的表單很聰明,就像VB讓你能很容易地為傳統(tǒng)Windows桌面應(yīng)用程

序創(chuàng)建表單一樣,它們讓你能方便地為Web創(chuàng)建表單。Web Form是 ASP.NET里的技術(shù),讓

你能使用熟悉的RAD工具創(chuàng)建帶有代碼的表單。創(chuàng)建的ASP.NET代碼編譯并駐留在服務(wù)器

上,并在那里被執(zhí)行,然后以HTML方式發(fā)送給任何一個(gè)支持HTML 3.2的瀏覽器。

底層結(jié)構(gòu)捕獲客戶(hù)端上的事件數(shù)據(jù),并把它發(fā)送給服務(wù)器。這意味著可以使用各種

用戶(hù)界面工具,可以利用現(xiàn)有的表單設(shè)計(jì)技巧,而且應(yīng)用程序界面是不依賴(lài)瀏覽器的。

如果可以放棄不依賴(lài)瀏覽器,你還有另一個(gè)選擇來(lái)利用Internet Explorer 某些功能特

有的優(yōu)勢(shì)。Web Form使支持Web的應(yīng)用程序能更容易地創(chuàng)建更好、更豐富多彩的用戶(hù)界面

。

Web服務(wù)策略

VB.NET里的另外一個(gè)重要的面向Web的功能是:Web服務(wù)。Microsoft的市場(chǎng)部門(mén)把W

eb服務(wù)列為采用.NET的幾大理由之一。實(shí)際上,Web服務(wù)的本質(zhì)就是使用標(biāo)準(zhǔn)協(xié)議的、由

Web服務(wù)器提供的、類(lèi)似于COM的對(duì)象。注意在技術(shù)上它們并不是COM對(duì)象,但和COM對(duì)象

的表現(xiàn)方式很相像。Microsoft希望看到所有的公司使用Web服務(wù),并且未來(lái)的應(yīng)用程序

可以簡(jiǎn)單地“粘”在不同的Web服務(wù)上,就像現(xiàn)在可以使用Visual Basic for Applicat

ions (VBA)建立基于Office和支持VBA的程序的解決方案一樣。

在PDC上,對(duì)于它希望開(kāi)發(fā)者如何“粘”在這些服務(wù)上,Microsoft提供的一個(gè)演示

程序給出了很好的例子。在這個(gè)演示程序里,一個(gè)假想的診所通過(guò)Web服務(wù)提供預(yù)約系統(tǒng)

,演示了你可以怎樣使用智能電話通過(guò)Web進(jìn)行預(yù)約。Visual Basic.NET 甚至?xí)试S你

查詢(xún)服務(wù)器,并獲得關(guān)于服務(wù)器能支持的所有Web服務(wù)的相關(guān)數(shù)據(jù)。通過(guò)IntelliSense

dropdown這個(gè)絕對(duì)有用的工具,程序員可以訪問(wèn)Web服務(wù)。Web服務(wù)是Microsoft雄心勃勃

的戰(zhàn)略,但只有時(shí)間才能檢驗(yàn)它是否能成功地被廣泛接納。

Microsoft試圖消除與包裝和分發(fā)應(yīng)用程序相關(guān)的問(wèn)題,包括令人恐懼的DLL。所有

.NET應(yīng)用程序被封裝為元件。元件包含著數(shù)據(jù)以描述它運(yùn)行所需的東西。這些數(shù)據(jù)被稱(chēng)

為貨單,包括很多信息,例如:元件身份(名稱(chēng)、版本等等);一個(gè)列出了所有文件之間

的依賴(lài)關(guān)系的表,以及它們的位置和版本;包括DLL相關(guān)數(shù)據(jù)的外部依賴(lài)關(guān)系信息;還有

其它元件需要而開(kāi)發(fā)者沒(méi)有創(chuàng)建的資源。元件是自說(shuō)明的(通過(guò)它們的貨單),所以.NET

應(yīng)用程序不需要修改注冊(cè)表才能工作。換句話說(shuō),你不再需要注冊(cè)表組件。在最好的情

況下,即客戶(hù)機(jī)里已經(jīng)有了.NET運(yùn)行庫(kù)時(shí),分發(fā)一個(gè)復(fù)雜的應(yīng)用程序可能只是把一個(gè)文

件夾復(fù)制到目標(biāo)機(jī)器上這么簡(jiǎn)單的事。元件的另一個(gè)好處是:你可以讓不同的應(yīng)用程序

使用同一個(gè)DLL的不同版本,并且協(xié)調(diào)地運(yùn)行在一臺(tái)機(jī)器上。如果所有這些都可以像計(jì)劃

中那樣工作,有關(guān)DLL的地獄和版本的噩夢(mèng)就將成為往事。

正確之路

Microsoft徹底更新了它的技術(shù),而不僅僅是核心語(yǔ)言。例如,在Visual Studio.N

ET里同時(shí)提供了ADO.NET,這是有特殊優(yōu)點(diǎn)的下一代ActiveX Data Objects (ADO) 版本

。它的一個(gè)靈活改變是:ADO.NET用Extensible Markup Language (XML)作為在組件之間

傳遞數(shù)據(jù)集的格式。這意味著接收組件不一定必須是ADO.NET組件,同時(shí)接收組件可以接

受任何XML 格式的數(shù)據(jù)集。談到XML,它支撐著VS.NET中的任何東西,從配置文件到遠(yuǎn)端

過(guò)程調(diào)用。ADO.NET在處理斷開(kāi)的數(shù)據(jù)集時(shí)比 ADO的性能要好,并且具有更好的伸縮性。

Visual Basic.NET對(duì)我們都很熟悉的VB做了重要的改變。C++革命性地跳躍到.NET后

有了一個(gè)新名字:C#,而Visual Basic的名字沒(méi)變。然而,如果你把VB.NET當(dāng)作語(yǔ)法相

似的一門(mén)新語(yǔ)言而不是簡(jiǎn)單的“升級(jí)”,可能掌握起來(lái)就要容易一些。本文給你一個(gè)起

點(diǎn),但吸收掌握各種知識(shí),并對(duì)未來(lái)做出有根據(jù)的決定是一個(gè)艱苦的過(guò)程,它只是這個(gè)

過(guò)程的一條起跑線。我不知道.NET會(huì)有多么成功,它的很多地方吸引我,但有些地方并

非如此。這個(gè)工具做了大量承諾,它夸耀很多功能能使 VB開(kāi)發(fā)者更簡(jiǎn)單地創(chuàng)建更有伸縮

性的高端應(yīng)用程序。最后,它的成功將取決于開(kāi)發(fā)者能多好地將它應(yīng)用于現(xiàn)實(shí)世界??v

觀Microsoft在PDC和Beta 1版本之間的性能和穩(wěn)定性上所跨過(guò)的這一步,我堅(jiān)定地認(rèn)為

:Microsoft走對(duì)了路!

vb點(diǎn)虐 入門(mén)之分組控件:GroupBox控件

我們對(duì)控件進(jìn)行分組的原因不外乎三個(gè)

為了獲得清晰的用戶(hù)界面而將相關(guān)的窗體元素進(jìn)行可視化分組

編程分組 如對(duì)單選按鈕進(jìn)行分組

為了在設(shè)計(jì)時(shí)將多個(gè)控件作為一個(gè)單元來(lái)移動(dòng)

在中 有GroupBox Panel TabControl這三個(gè)控件可以實(shí)現(xiàn)上面所提到的三個(gè)分組目的 所以我們稱(chēng)它們?yōu)榉纸M控件

這三個(gè)控件在功用上十分的相似 特別是GroupBox和Panel控件 只存在一點(diǎn)細(xì)微的差別而已(這個(gè)差別是 只有GroupBox控件可以顯示標(biāo)題 而只有Panel控件可以有滾動(dòng)條) 這里我們就先來(lái)了解GroupBox控件的使用

GroupBox(控件組)控件一般是作為其他控件的組的容器的形式存在的 這樣有利于用戶(hù)識(shí)別 使界面變得更加友好(GroupBox控件相當(dāng)于Visual Basic以前版本的Frame控件) 使用控件組控件可以將一個(gè)窗體中的各種功能進(jìn)一步進(jìn)行分類(lèi) 例如 將各種選項(xiàng)按鈕控件分隔開(kāi)

當(dāng)移動(dòng)單個(gè)GroupBox控件時(shí) 它所包含的所有控件也將一起移動(dòng)

在大多數(shù)情況下 對(duì)控件組控件沒(méi)有實(shí)際的操作 我們用它對(duì)控件進(jìn)行分組 通常沒(méi)有必要響應(yīng)它的事件 不過(guò) 它的Name Text和Font等屬性可能會(huì)經(jīng)常被修改 以適應(yīng)應(yīng)用程序在不同階段的要求

GroupBox控件在工具箱中的圖標(biāo)如圖所示

一 GroupBox控件的常用屬性

Anchor和Dock 這兩個(gè)屬性是所有有用戶(hù)界面的控件都有的定位屬性 這里就不啰嗦了

Name屬性 標(biāo)識(shí)控件的對(duì)象名稱(chēng)

Text屬性 顯示在GroupBox控件右上方的標(biāo)題文字 可以用來(lái)標(biāo)識(shí)該控件組的描述

Font和ForeColor屬性 用于改變GroupBox控件的文字大小以及文字的顏色 需要注意的時(shí)候 它不單改變GroupBox控件的Text屬性的文字外觀 同時(shí)也改變其內(nèi)部控件的顯示的Text屬性的文字外觀

二 創(chuàng)建一組控件

在窗體上放置GroupBox控件 從工具箱中拖放一個(gè)GroupBox控件到窗體上的合適位置 調(diào)整大小

在屬性窗口中改變GroupBox控件的Text屬性 作為它的標(biāo)題

在GroupBox控件內(nèi)拖放其它需要的控件 例如RadioButton控件

設(shè)置示例 如圖一所示

圖一 用控件組控件對(duì)單選按鈕分組

我們?cè)谕蟿?dòng)單個(gè)GroupBox控件的時(shí)候 它內(nèi)部的控件也會(huì)隨著移動(dòng) 以保持和GroupBox的相對(duì)位置不變 同理 刪除GroupBox控件時(shí) 它所包含的所有控件也會(huì)被刪除掉

當(dāng)我們調(diào)整GroupBox控件所包含的控件的Anchor和Dock屬性的時(shí)候 其參照物將不是Form窗體 而是GroupBox控件了

三 編程添加GroupBox控件以及它所包含的控件

雖然GroupBox控件是在設(shè)計(jì)時(shí)用視圖設(shè)計(jì)布局效果最好 但是無(wú)可避免地 很多特殊情況下也是需要在運(yùn)行做添加控件到控件組中的 這里我們就用代碼來(lái)完成上圖一界面的繪制

動(dòng)態(tài)添加控件一般需要經(jīng)過(guò)下面三個(gè)步驟

創(chuàng)建要添加的控件實(shí)例

設(shè)置新控件的屬性

將控件添加到父控件的 Controls 集合

在Form 代碼的任意位置增加初始化控件的過(guò)程InitializeControl() 代碼如下所示

Sub InitializeControl()

首先添加Label和TextBox控件

Dim Label As New System Windows Forms Label

Dim TextBox As New System Windows Forms TextBox

Label

Label Location = New System Drawing Point( )

Label Name = Label

Label Size = New System Drawing Size( )

Label TabIndex =

Label Text = 戶(hù)主姓名

TextBox

TextBox Location = New System Drawing Point( )

TextBox Name = TextBox

TextBox Size = New System Drawing Size( )

TextBox TabIndex =

TextBox Text =

把它們添加到父控件Form 的Controls集合中

Me Controls Add(TextBox )

Me Controls Add(Label )

添加三個(gè)GroupBox控件

Dim GroupBox As New System Windows Forms GroupBox

Dim GroupBox As New System Windows Forms GroupBox

Dim GroupBox As New System Windows Forms GroupBox

GroupBox

GroupBox BackColor = System Drawing SystemColors Control

GroupBox Location = New System Drawing Point( )

GroupBox Name = GroupBox

GroupBox Size = New System Drawing Size( )

GroupBox TabIndex =

GroupBox TabStop = False

GroupBox Text = 性別

GroupBox

GroupBox Location = New System Drawing Point( )

GroupBox Name = GroupBox

GroupBox Size = New System Drawing Size( )

GroupBox TabIndex =

GroupBox TabStop = False

GroupBox Text = 單元

GroupBox

GroupBox Location = New System Drawing Point( )

GroupBox Name = GroupBox

GroupBox Size = New System Drawing Size( )

GroupBox TabIndex =

GroupBox TabStop = False

GroupBox Text = 樓層

把它們添加到父控件Form 的Controls集合中

Me Controls Add(GroupBox )

Me Controls Add(GroupBox )

Me Controls Add(GroupBox )

添加RadioButton控件并分別繪制在GroupBox控件內(nèi)

Dim RadioButton As New System Windows Forms RadioButton

Dim RadioButton As New System Windows Forms RadioButton

Dim RadioButton As New System Windows Forms RadioButton

Dim RadioButton As New System Windows Forms RadioButton

Dim RadioButton As New System Windows Forms RadioButton

Dim RadioButton As New System Windows Forms RadioButton

Dim RadioButton As New System Windows Forms RadioButton

Dim RadioButton As New System Windows Forms RadioButton

Dim RadioButton As New System Windows Forms RadioButton

Dim RadioButton As New System Windows Forms RadioButton

RadioButton

RadioButton Location = New System Drawing Point( )

RadioButton Name = RadioButton

RadioButton Size = New System Drawing Size( )

RadioButton TabIndex =

RadioButton Text = 男性

RadioButton

RadioButton Location = New System Drawing Point( )

RadioButton Name = RadioButton

RadioButton Size = New System Drawing Size( )

RadioButton TabIndex =

RadioButton Text = 女性

RadioButton

RadioButton Location = New System Drawing Point( )

RadioButton Name = RadioButton

RadioButton Size = New System Drawing Size( )

RadioButton TabIndex =

RadioButton Text = 二單元

RadioButton

RadioButton Location = New System Drawing Point( )

RadioButton Name = RadioButton

RadioButton Size = New System Drawing Size( )

RadioButton TabIndex =

RadioButton Text = 三單元

RadioButton

RadioButton Location = New System Drawing Point( )

RadioButton Name = RadioButton

RadioButton Size = New System Drawing Size( )

RadioButton TabIndex =

RadioButton Text = 一單元

RadioButton

RadioButton BackColor = System Drawing SystemColors Control

RadioButton Location = New System Drawing Point( )

RadioButton Name = RadioButton

RadioButton Size = New System Drawing Size( )

RadioButton TabIndex =

RadioButton Text = 四單元

RadioButton

RadioButton Location = New System Drawing Point( )

RadioButton Name = RadioButton

RadioButton Size = New System Drawing Size( )

RadioButton TabIndex =

RadioButton Text = 二樓

RadioButton

RadioButton Location = New System Drawing Point( )

RadioButton Name = RadioButton

RadioButton Size = New System Drawing Size( )

RadioButton TabIndex =

RadioButton Text = 三樓

RadioButton

RadioButton Location = New System Drawing Point( )

RadioButton Name = RadioButton

RadioButton Size = New System Drawing Size( )

RadioButton TabIndex =

RadioButton Text = 一樓

RadioButton

RadioButton BackColor = System Drawing SystemColors Control

RadioButton Location = New System Drawing Point( )

RadioButton Name = RadioButton

RadioButton Size = New System Drawing Size( )

RadioButton TabIndex =

RadioButton Text = 四樓

分別把它們添加到父控件GroupBox的Controls集合中

GroupBox Controls Add(RadioButton )

GroupBox Controls Add(RadioButton )

GroupBox Controls Add(RadioButton )

GroupBox Controls Add(RadioButton )

GroupBox Controls Add(RadioButton )

GroupBox Controls Add(RadioButton )

GroupBox Controls Add(RadioButton )

GroupBox Controls Add(RadioButton )

GroupBox Controls Add(RadioButton )

GroupBox Controls Add(RadioButton )

End Sub

把上一頁(yè)的代碼復(fù)制添加后 把控件初始化過(guò)程InitializeControl()過(guò)程添加到Form 的New構(gòu)造函數(shù)中 如下圖二所示

圖二 在New構(gòu)造函數(shù)中添加過(guò)程InitializeControl()

現(xiàn)在按F 運(yùn)行 Form 的窗體控件布局(如下圖三所示)是不是和我們手工布局的圖一的布局是一樣的呢?

lishixinzhi/Article/program/ASP/201311/21749

vb語(yǔ)言的特點(diǎn)

VB語(yǔ)言特點(diǎn):

1、不支持繼承

VB 5.0 和 VB 6.0 都是基于對(duì)象的編程語(yǔ)言,但是不包含繼承特性。VB 中提供了特殊的類(lèi)的功能,但是還是不能滿(mǎn)足程序員的需求。

2、無(wú)原生支持多線程

Visual Basic 對(duì)于多線程無(wú)原生支持,只能通過(guò)Windows API的調(diào)用實(shí)現(xiàn),且極其的不穩(wěn)定。因?yàn)樵贏PI創(chuàng)建的線程中,并沒(méi)有自動(dòng)初始化運(yùn)行時(shí)庫(kù),導(dǎo)致部分的函數(shù)無(wú)法使用。一般的,在VB6等早期的VB開(kāi)發(fā)環(huán)境下,使用API創(chuàng)建線程的目的是完成容易使程序假死的大量數(shù)據(jù)或者邏輯的計(jì)算。

3、異常處理不完善

Visual Basic 中內(nèi)置異常處理,即使未寫(xiě)異常處理代碼,一旦用戶(hù)出錯(cuò)也會(huì)彈出一個(gè)明確寫(xiě)出出錯(cuò)原因?qū)υ捒?,接著程序終止。

擴(kuò)展資料:

VB的派生語(yǔ)言:

1、VBA

Visual Basic for Applications(VBA):包含在微軟的應(yīng)用程序中(如Microsoft Office),以及類(lèi)似WordPerfect、Office這樣第三方的產(chǎn)品里面。VBA 這樣嵌入在各種應(yīng)用程序中看起來(lái)有些矛盾,但是它的功能和 VB 一樣強(qiáng)大。

2、VBS

VBScript(VBS):是默認(rèn)的ASP語(yǔ)言,還可以用在Windows腳本編寫(xiě)和網(wǎng)頁(yè)編碼中。盡管它的語(yǔ)法類(lèi)似于VB,但是它卻是一種完全不同的語(yǔ)言。VBS 不使用 VB運(yùn)行庫(kù)運(yùn)行,而是由Windows腳本主機(jī)解釋執(zhí)行。這兩種語(yǔ)言之中的不同點(diǎn)影響ASP網(wǎng)站的表現(xiàn)。

3、vb點(diǎn)虐

Visual Basic點(diǎn)虐 (vb點(diǎn)虐 ):當(dāng)微軟準(zhǔn)備開(kāi)發(fā)一種新的編程工具的時(shí)候,第一決定就是利用 VB 6.0 來(lái)進(jìn)行舊改,或者就是重新組建工程開(kāi)發(fā)新工具。

參考資料來(lái)源:百度百科-VB


本文名稱(chēng):關(guān)于vb點(diǎn)虐 口齒清晰的信息
當(dāng)前地址:http://weahome.cn/article/ddcggis.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部