新聞中心
VB.NET作為一種面向?qū)ο笳Z言,具有很多突出的特點(diǎn)吸引著開發(fā)人員的眼球。我們在這里會通過對VB.NET動態(tài)標(biāo)識的相關(guān)內(nèi)容的解讀,對這一語言進(jìn)行一個詳細(xì)的了解, 以提高我們對其的理解程度。#t#

射陽網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),射陽網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為射陽上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的射陽做網(wǎng)站的公司定做!
動態(tài)語言今年來發(fā)展很快,各種腳本語言多少都帶有些動態(tài)語言的特點(diǎn)。動態(tài)語言以其靈活的語法和豐富的運(yùn)行時行為贏得了許多人的青睞。在.NET陣營,C#一直扮演著靜態(tài)語言的角色,盡管3.0的語法改變很激進(jìn),但仍注重于編譯時的類型檢查和約束。
動態(tài)特性用的不好會產(chǎn)生更多運(yùn)行時問題,不易確保程序的可靠性,但其提高開發(fā)效率的作用是毋庸置疑的。Visual Basic 9.0是Visual Studio中唯一能讓你統(tǒng)領(lǐng)動態(tài)和靜態(tài)兩大領(lǐng)域的語言,讓你在程序中自由選擇喜歡的風(fēng)格。
Visual Basic 從1.0便支持后期綁定,即按照對象的運(yùn)行時類型信息使用對象,而不是定義這個對象時的類型信息。如:
- Dim l As Object =
New ArrayList()- l.Add(12)
- l.RemoveAt(0)
我們知道Object沒有Add或RemoveAt方法,但運(yùn)行時類型ArrayList具有他們,因此Visual Basic允許到運(yùn)行時再檢查有無相應(yīng)的操作并支持。既然這個過程已經(jīng)是在運(yùn)行時做的了,我們就應(yīng)該允許這個后期綁定的操作本身也是在運(yùn)行時確定。這個語法增強(qiáng)叫做VB.NET動態(tài)標(biāo)識。比如我們可以和這樣寫:
- Dim l As Object =
New ArrayList()- l.("Add")(12)
- l.("RemoveAt")(0)
我們看到,這個時候方法名稱Add和RemoveAt已經(jīng)是字符串了,它當(dāng)然也可以是包含字符串的變量!所以你甚至可以寫出這樣的代碼:
- l.(Console.ReadLine())(12)
- l.("Remove" & "At")(0)
這樣,作為方法名稱的標(biāo)識符就可以完全在動態(tài)期間確定了。方法名稱如此,那么類型名稱呢?理應(yīng)如此。我們可以這樣寫:
- Dim l As Object =
New ("ArrayList")()
這樣,你的變量l的類型將根據(jù)一個運(yùn)行時字符串的值確定。VB.NET動態(tài)標(biāo)識還能將函數(shù)的參數(shù)也動態(tài)化,假設(shè)有下列子程序:
- Sub Method1(Optional
arg1 As String, Optional
arg2 As String)
運(yùn)行的時候,我們可以動態(tài)地指定將數(shù)值賦給哪個參數(shù):
- If a > 0 Then argString =
"arg1" Else argString = "arg2"- Method1(:= a.ToString())
注意在:=符號之前的大括號,表示對參數(shù)名稱的動態(tài)結(jié)合。有了VB.NET動態(tài)標(biāo)識這一特性,Visual Basic 9.0將不需要利用反射的復(fù)雜語法,就可以做很多需要反射和運(yùn)行時類型信息來做的任務(wù),這使得Visual Basic成為解決你手邊小問題的最佳幫手。本期我們已經(jīng)領(lǐng)略到Visual Basic 9.0在動態(tài)特性上的革新。
文章標(biāo)題:VB.NET動態(tài)標(biāo)識符體現(xiàn)動態(tài)語言特性
本文URL:http://www.5511xx.com/article/dhjgiee.html


咨詢
建站咨詢
