自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

VB.NET類(lèi)應(yīng)用基礎(chǔ)

開(kāi)發(fā) 后端
VB.NET類(lèi)的用法相對(duì)于VB6來(lái)說(shuō),還是有很多不同之處的。比如在Set關(guān)鍵詞的使用上就可以體現(xiàn)出來(lái)。下面就來(lái)一起看看吧。

什么是VB.NET?這一問(wèn)題對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)不難回答。因?yàn)樵趯?shí)際編程中使用這一語(yǔ)言可以幫助我們輕松的實(shí)現(xiàn)各種功能需求。首先讓我們從VB.NET類(lèi)的基本概念開(kāi)始對(duì)這一編程語(yǔ)言進(jìn)行一個(gè)詳盡的了解。#t#

不妨假設(shè)我把你帶回到了學(xué)院,現(xiàn)在你走進(jìn)一個(gè)教室,我要求你解釋一下什么是類(lèi)(class),你可能會(huì)這樣回答:“一組學(xué)生形成一個(gè)班(class)。”呵呵,如果這樣回答,你真是歪打正著了:沒(méi)錯(cuò),在這里,組就是最關(guān)鍵的詞。用面向?qū)ο蟮木幊趟枷雭?lái)看,類(lèi)就是存儲(chǔ)數(shù)據(jù)同時(shí)給一組相關(guān)代碼賦予協(xié)調(diào)功能的方式。類(lèi)是面向?qū)ο缶幊痰暮诵摹?/p>

VB.NET類(lèi)的新面目

VB6和VB.NET在類(lèi)的用法上有一個(gè)首要的顯著差別,那就是后者不再采用Set關(guān)鍵詞了。除此以外,在代碼中定義類(lèi)的方法也有所改變。這些變動(dòng)不僅會(huì)直接影響你編寫(xiě)的代碼而且更會(huì)改變你組織源文件的方式。

在VB6下,每個(gè)類(lèi)都必須在單個(gè)源文件內(nèi)增加和定義。而在VB.NET下就不是這樣了:類(lèi)以代碼塊的形式定義,如下所示:

  1. Public Class MyClass  
  2. '在這里編寫(xiě)類(lèi)的成員代碼!  
  3. End Class 

面對(duì)如此革命性的變化,有些人可能會(huì)急得嘴角發(fā)泡,而大多數(shù)人卻可能并不在乎或不明白用代碼塊定義類(lèi)到底用什么用。說(shuō)真的,這全看你的口味。有些人喜歡而且希望一個(gè)文件中就只定義一個(gè)類(lèi),而另一些人則更愿意邏輯地組織他們的類(lèi)。例如,如果你有一個(gè)product類(lèi),同時(shí)又有了一個(gè)對(duì)應(yīng)的products collection類(lèi),那么你完全可以把它們放在同一文件里以便更好地組織源文件。

VB.NET類(lèi)的構(gòu)造和析構(gòu)——舊貌換新顏

當(dāng)你的代碼在創(chuàng)建一個(gè)類(lèi)的實(shí)例時(shí)會(huì)調(diào)用該類(lèi)的一個(gè)特殊方法:構(gòu)造器(constructor)。同樣的,在類(lèi)被破壞的時(shí)候則會(huì)調(diào)用析構(gòu)器(destructor)方法。在大多數(shù)面向?qū)ο笳Z(yǔ)言里牽扯到類(lèi)的構(gòu)造和析構(gòu)時(shí)通常都采用了以上兩個(gè)一般術(shù)語(yǔ)而非具體編碼時(shí)的成員名。我則喜歡采用術(shù)語(yǔ)“structors”來(lái)引用構(gòu)造和析構(gòu)。在VB6語(yǔ)言里,具體的“structors”是Class_Initialize和Class_Terminate。在VB.NET下,Class_Initialize方法則被重命名為New,而Class_Terminate則成了Finalize。

按照VB6對(duì)類(lèi)構(gòu)造器的實(shí)現(xiàn)限制,程序員不得給該方法添加參數(shù)。然而,VB.NET中則對(duì)構(gòu)造器方法提供了參數(shù)支持。在VB.NET下,你現(xiàn)在可以隨意地把參數(shù)添加到這個(gè)方法中來(lái),甚至可以重載該方法。

參數(shù)化的構(gòu)造器如何靈活地創(chuàng)建類(lèi)呢?舉個(gè)例子,假設(shè)有一個(gè)ADO Connection類(lèi)。用VB6語(yǔ)言的話,你首先得把該類(lèi)實(shí)例化,然后在代碼中用ConnectionString屬性定義連接。要用VB.NET的話,這個(gè)類(lèi)的構(gòu)造器就被參數(shù)化和重載了,這樣,在程序員給對(duì)象實(shí)例化時(shí)就可以給它傳遞一個(gè)連接字符串,這樣你就不必關(guān)心代碼內(nèi)如何設(shè)置以后的連接了。當(dāng)然,你完全可以按老辦法做:什么參數(shù)都不傳遞,以后在代碼中設(shè)置連接字符串。

域和屬性

很多人在對(duì)屬性的認(rèn)識(shí)上產(chǎn)生了一些混亂的概念。其實(shí)屬性這個(gè)東西絕非人們想象的那么復(fù)雜。讓我們回到最基礎(chǔ)的概念層次上來(lái)討論屬性:所謂屬性其實(shí)就是暴露了讀/寫(xiě)接口的類(lèi)的內(nèi)部所包含的一塊數(shù)據(jù)。按照這個(gè)定義,你可能會(huì)認(rèn)為你能在類(lèi)中聲明一個(gè)公共變量然后把它稱(chēng)為一個(gè)屬性。當(dāng)然,這種假設(shè)也不是沒(méi)有一點(diǎn)道理,不過(guò),類(lèi)的公共變量所對(duì)應(yīng)的技術(shù)術(shù)語(yǔ)應(yīng)該是field(域)。域和屬性之間的關(guān)鍵差別在于接口的包含性質(zhì)上?,F(xiàn)在暫時(shí)不對(duì)這一差別做具體解釋咱們先明白其語(yǔ)法用途即可。

在VB6中,屬性由Let、Get和Set程序來(lái)定義和操作。而在VB.NET中語(yǔ)法就變了。屬性被組織為單個(gè)Property代碼塊,其中針對(duì)屬性的寫(xiě)(Set)和讀(Get)操作設(shè)置了子代碼塊。這一程序起到了類(lèi)的私有變量之上的抽象層作用。大多數(shù)人習(xí)慣于采用類(lèi)似公共變量的方式命名這些私有變量,在它們前面加上小寫(xiě)的前綴字母m或者加上下劃線區(qū)分所關(guān)聯(lián)的屬性(m前綴是VB6中繼承下來(lái)的,意思是:“模塊級(jí)變量”)。舉一個(gè)例子:

 

  1. Private _ContactName As String  
  2. Public Property ContactName()  
  3. Get  
  4. Return _ContactName  
  5. End Get  
  6. Set(ByVal Value)  
  7. _ContactName = Value 
  8. End Set  
  9. End Property 

 

我給一個(gè)假定的類(lèi)ContactName創(chuàng)建了一個(gè)屬性。為了支持該屬性,我需要在類(lèi)里設(shè)置一個(gè)變量存儲(chǔ)其實(shí)際值。ContactName私有變量就是完成這一功能的。只要我獲取或者設(shè)置了該屬性,我就等于間接地使用了該值。

那么,為什么這么做就比使用域更好一些呢?主要的原因是,如果采用域,那么就無(wú)法控制寫(xiě)到變量中的數(shù)據(jù)。比方說(shuō),有的人卻偏偏要在整數(shù)域中置入字符串或者給只讀域賦值。在采用屬性的情況下,你可以在Set程序中增加邏輯來(lái)保證賦值的有效性。你甚至可以完全省略Set代碼塊把屬性設(shè)置為只讀。

屬性真奇妙

最后,.NET還向我們提供了就被稱(chēng)為屬性的內(nèi)容。如果某個(gè)VB.NET類(lèi)標(biāo)記為屬性,那么它就被賦予一些特別有意思的專(zhuān)門(mén)功能。比如以下的Serializable屬性。

 

  1. < Serializable()> 
  2. Public Class MyClass  
  3. '該類(lèi)可以串行化!  
  4. End Class 

 

把以上的類(lèi)標(biāo)記為屬性之后,不論其處于什么狀態(tài)我都可以獲取其實(shí)例并寫(xiě)出磁盤(pán)。在一些任何時(shí)候,我就可以對(duì)該類(lèi)去串行化,就好象它始終保存在內(nèi)存中一樣。.NET框架提供了大量的屬性,你甚至可以自VB.NET創(chuàng)建屬性。

繼承

正如你看到的那樣,VB.NET類(lèi)在概念和工作方式上相比VB6.0已經(jīng)發(fā)生了重要的變化。在下一篇文章里,我還會(huì)繼續(xù)對(duì)這些變化進(jìn)行討論,主要是闡述類(lèi)的繼承問(wèn)題。大多數(shù)VB程序員都可能了解繼承,但他們卻幾乎從來(lái)沒(méi)有使用過(guò)它。我將具體解釋下繼承的重要性以及在什么情況

責(zé)任編輯:曹凱 來(lái)源: CSDN
相關(guān)推薦

2010-01-12 18:40:22

VB.NET Form

2010-01-14 18:08:08

VB.NET抽象類(lèi)

2009-10-20 09:39:04

VB.NET Butt

2009-10-13 14:50:59

VB.NET Envi

2009-10-20 17:38:54

VB.NET Comp

2009-10-09 15:59:41

VB.NET對(duì)象

2010-01-12 18:05:38

VB.NET對(duì)象

2010-01-13 10:15:19

VB.NET Stri

2009-10-23 14:06:07

VB.NET類(lèi)對(duì)象

2009-10-15 10:57:16

VB.NET Text

2009-10-16 10:14:26

VB.NET使用Fil

2010-01-08 14:56:18

VB.NET類(lèi)定義

2009-11-02 15:57:36

VB.NET WEB

2009-11-10 16:46:52

VB.NET指針應(yīng)用

2010-01-07 15:25:11

VB.NET數(shù)組

2010-01-07 15:57:02

VB.NET ForEach

2009-10-26 10:44:27

VB.NET API函

2010-01-13 14:26:39

VB.NET開(kāi)發(fā)

2010-01-21 16:17:32

VB.NET文件對(duì)象

2010-01-12 18:28:28

VB.NET共享變量
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)