關於Visual Basic 9.0的動態標識符

來源:互聯網
上載者:User

動態語言今年來發展很快,各種指令碼語言多少都帶有些動態語言的特點。動態語言以其靈活的文法和豐富的運行時行為贏得了許多人的青睞。在.NET陣營,C#一直扮演著靜態語言的角色,儘管3.0的文法改變很激進,但仍注重於編譯時間的類型檢查和約束。動態特性用的不好會產生更多運行時問題,不易確保程式的可靠性,但其提高開發效率的作用是毋庸置疑的。Visual Basic 9.0是Visual Studio中唯一能讓你統領動態和靜態兩大領域的語言,讓你在程式中自由選擇喜歡的風格。

Visual Basic 從1.0便支援後期綁定,即按照對象的運行時類型資訊使用對象,而不是定義這個對象時的類型資訊。如:

Dim l As Object = New ArrayList()l.Add(12)l.RemoveAt(0)

我們知道Object沒有Add或RemoveAt方法,但運行時類型ArrayList具有他們,因此Visual Basic允許到運行時再檢查有無相應的操作並支援。既然這個過程已經是在運行時做的了,我們就應該允許這個後期綁定的操作本身也是在運行時確定。這個文法增強叫做動態標識符。比如我們可以和這樣寫:

Dim l As Object = New ArrayList()l.("Add")(12)l.("RemoveAt")(0)

我們看到,這個時候方法名稱Add和RemoveAt已經是字串了,它當然也可以是包含字串的變數!所以你甚至可以寫出這樣的代碼:

l.(Console.ReadLine())(12)l.("Remove" & "At")(0)

這樣,作為方法名稱的標識符就可以完全在動態期間確定了。方法名稱如此,那麼類型名稱呢?理應如此。我們可以這樣寫:

Dim l As Object = New ("ArrayList")()

這樣,你的變數l的類型將根據一個運行時字串的值確定。動態標識符還能將函數的參數也動態化,假設有下列子程式:

Sub Method1(Optional arg1 As String, Optional arg2 As String)

啟動並執行時候,我們可以動態地指定將數值賦給哪個參數:

If a > 0 Then argString = "arg1" Else argString = "arg2"Method1({argString}:= a.ToString())

注意在:=符號之前的大括弧,表示對參數名稱的動態結合。有了動態標識符這一特性,Visual Basic 9.0將不需要利用反射的複雜文法,就可以做很多需要反射和運行時類型資訊來做的任務,這使得Visual Basic成為解決你手邊小問題的最佳幫手。本期我們已經領略到Visual Basic 9.0在動態特性上的革新,下一期將介紹第二個動態特性——動態介面。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.