国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

vb.Net編程簡介之一(轉(zhuǎn))

2024-07-10 13:02:41
字體:
供稿:網(wǎng)友
使用先前綁定
    visual basic 6.0和visual basic.net都支持對象的延遲綁定,
該方法事先定義一個變量為object數(shù)據(jù)類型,然后在運行時將其設定為一個類。然而,在升級過程中,當訪問延遲綁定對象的缺省屬性時可能會產(chǎn)生錯誤。例如假設工程中包含form1,form1中有一個label對象,名稱為label1,下面的visual basic 6.0代碼將label的標題
設定為"sometext"

dim o as object
set o = me.label1
o.caption = "sometext"

    在visual basic.net的windows窗體中,label控件的caption屬
性被稱為text屬性。當你的代碼升級后,所有實例中的caption屬性都會轉(zhuǎn)換為text屬性,但是延遲綁定對象是無類型(type-less)的,vb無法檢測到對象的類型并做更改,在這種情況下,你需要手工對代碼做改動。當你使用先前綁定對象時,對象可以自動升級,如下:

dim o as label
set o = me.label1
o.caption = "sometext"

    所以在程序中你需要將對象定義為適當?shù)膶ο箢愋投皇呛唵蔚?br>定義為object對象類型。

    同visual c++類似。visual basic.net支持函數(shù)的重載,例如下
面的一個函數(shù)具有兩個形態(tài)

    environ( expression as integer) as string
    environ( expression as string ) as string

    visual basic.net會自動檢測該使用那個參數(shù)的函數(shù)。如果你傳
遞一個正數(shù)值到environ(),那么正數(shù)調(diào)用版本會被調(diào)用;如果傳遞一個字符串,string版本會被調(diào)用。如果傳遞object或者variant數(shù)據(jù)類型到一個重載函數(shù)將產(chǎn)生運行時錯誤。如果要想產(chǎn)生正確的結(jié)果就需要通過數(shù)據(jù)類型的強制轉(zhuǎn)換,例如:

dim a as string
dim v as variant
v = "path"
a = environ(cstr(v))   '正確

    對于延遲綁定的對象使用強制類型轉(zhuǎn)換是一個很好的編程習慣。
這就使得代碼可讀性更好,同時也可以非常輕松的移植到visual basic.net使用date存儲日期/時間較早版本的vb支持使用double數(shù)據(jù)類型來存儲和改變時間。
    在visual basic.net中,這個特性將不再支持,因為在計算機內(nèi)部日期并不是以double方式存儲的,例如下面的代碼可以在visual basic 6.0中運行,但是在visual basic.net中會產(chǎn)生錯誤。

dim dbl as double
dim dat as date
dat = now
dbl = dat      '錯誤,不能將一個date變量賦予一個double變量
dbl = dateadd("d", 1, dbl)   '錯誤,double變量不能用于日期函
數(shù)
dat = cdate(dbl)   '錯誤 cdate函數(shù)不能將double變量轉(zhuǎn)換到date

    .net架構(gòu)提供了tooadate與fromoadate函數(shù)用于在double變量以
及date變量之間轉(zhuǎn)換。然而這需要在升級后手工修改,所以在存儲日期時應該使用date數(shù)據(jù)類型。

缺省屬性
    在visual basic 6.0中,許多對象都有缺省屬性,缺省屬性在代
碼中可以省略。例如:

msgbox form1.text1.text

可以這樣編寫:

msgbox form1.text1   

缺省屬性在代碼編譯是決定。同樣,你也可以在延遲綁定的對象中使
用缺省屬性,例如:

dim obj as object
set obj = form1.text1
msgbox obj

對于延遲綁定的對象,缺省屬性在程序運行時決定。

    visual basic.net不支持缺省屬性,當你的工程升級后,
visual basic.net會自動決定缺省屬性,但是對于延遲綁定的對象無法自動解決決定缺省屬性的問題。在這種情況下,你需要自己來修改代碼。更加復雜的是,很多庫是通過 _default屬性來實現(xiàn)缺省屬性的。_default象是一個代理,它將調(diào)用傳遞給真正的缺省屬性。所以當你的工程升級后,一些屬性會被更改為 _default。代碼還是象往常那樣工作,只是代碼不如原來的實際屬性易讀。

dim obj as object
set obj = me.text1
msgbox obj   '不好的代碼,使用缺省屬性
msgbox me.text1   '不好的代碼,使用缺省屬性

use:

dim obj as object
set obj = me.text1
msgbox obj.text   '好的代碼,寫出了屬性
msgbox me.text1.text   '好的代碼,寫出了屬性

    雖然缺省屬性不被visual basic.net支持,但是帶參數(shù)的缺省屬
性是被支持的,要了解它們之間的區(qū)別,下面是范例:

dim rs as adodb.recordset
rs("companyname") = "somecompany"
rs!companyname = "somecompany"

實際上等于:

dim rs as adodb.recordset
rs.fields("companyname").value = "somecompany"
rs.fields!companyname.value = "somecompany"

因為value是fields的缺省屬性對于第二種寫法,visual basic.net是支持的;然而第一種情況不被支持,那么正確的用法如下:

dim rs as adodb.recordset
rs("companyname").value = "somecompany"
rs!companyname.value = "somecompany"

    象上面的范例和其它的大多數(shù)情況可以在工程升級時解決,但是
你還是要避免在visual basic 6.0中在object和variant數(shù)據(jù)類型使用缺省屬性。因為升級程序無法發(fā)現(xiàn)并解決這些錯誤。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 泸西县| 灵川县| 湄潭县| 秦皇岛市| 太白县| 沈阳市| 白银市| 林芝县| 昌黎县| 方城县| 正宁县| 哈巴河县| 南开区| 大厂| 泸州市| 象州县| 荥阳市| 淅川县| 岗巴县| 巩义市| 留坝县| 商丘市| 南华县| 塔城市| 长宁区| 渭源县| 湘西| 河池市| 密云县| 靖安县| 尤溪县| 龙岩市| 平果县| 慈利县| 金川县| 涿州市| 广元市| 青海省| 永春县| 淳安县| 通河县|