全面分析VB.NET數(shù)組語法總結(jié)
有些人會(huì)問道VB.NET的路在哪,為什么現(xiàn)在大多數(shù)人都喜歡java或者C#。今天就這個(gè)問題來和大家探討一下,在為大家講講關(guān)于VB.NET數(shù)組的一些概念和語法。
很多人想知道微軟為何重視C#而輕視VB.NET,為何VB.NET開發(fā)者和C#開發(fā)者同工不同酬,VB.NET開發(fā)者的未來在哪里。.NET管理語言組的項(xiàng)目經(jīng)理Lisa Feigenbaum在播客上向VB.NET社區(qū)保證——VB的未來依舊是光明燦爛的。
Lisa解釋了為何大家對(duì)VB.NET和C#有不同的理解:首先這是由微軟的策略所決定的。微軟可不僅僅想在CLR上面運(yùn)行兩套語法完全不同的語言,公司希望這兩種語言能夠各司其職,因此在.NET的世界中,這兩種語言的發(fā)展路線是截然不同的。微軟發(fā)布的大多數(shù)文檔都包含了豐富的C#示例,與此相反,VB.NET的示例數(shù)量就大打折扣了,因此大家都覺得VB.NET并不受寵,有些窮途末路了。
根據(jù)Lisa所述,一開始微軟想在這兩種語言中分別加入不同的特性以便讓他們各取所長(zhǎng),但VB.NET用戶一次又一次地要求微軟向VB.NET中加入C#特性,同時(shí)C#用戶也想在C#中加入VB.NET特性,這么做的直接后果就是微軟決定同步發(fā)展這兩種語言。同時(shí)VB.NET開發(fā)者的數(shù)量要比C#開發(fā)者多一些,因此微軟并不會(huì)扼殺VB.NET,這也不是公司的意愿。當(dāng)18個(gè)月前VB.NET與C#設(shè)計(jì)團(tuán)隊(duì)合并在一起以共同推進(jìn)語言的發(fā)展時(shí),微軟的這項(xiàng)承諾也終于付諸實(shí)踐了。
C#的***架構(gòu)師Anders Hejlsberg檢視了這兩個(gè)語言的發(fā)展歷程得出這樣一個(gè)結(jié)論:兩種語言都在不斷發(fā)展。每當(dāng)Anders決定兩種語言要實(shí)現(xiàn)的某個(gè)新特性后,VB.NET與C#開發(fā)團(tuán)隊(duì)就分別鉆進(jìn)了各自的房間討論如何根據(jù)相應(yīng)語言的語法和整體設(shè)計(jì)原則來實(shí)現(xiàn)這個(gè)新特性。這么做會(huì)導(dǎo)致兩種后果:其一,兩種語言增加同樣的特性集,其二,每種語言都保持自己的個(gè)性而不管另一種語言到底是怎么做的。這就確保了VB.NET并不會(huì)被C#所蠶食。這兩種語言的同化性越來越明顯了。到目前為止,C#能做而VB.NET不能做的東西就剩下XNA游戲了,因?yàn)閂B.NET沒有對(duì)應(yīng)的項(xiàng)目模板。然而微軟希望填平語言間的鴻溝,因此這兩種語言最終將走向大同世界。
我們將在下個(gè)版本的Visual Studio中看到兩個(gè)語言設(shè)計(jì)小組合并后的努力成果。VS最初是用C和C++開發(fā)的,但VS 2010的編輯器和編譯器將包含更多的托管代碼,力度也是史上***的,這意味著將使用更多的C#和VB.NET代碼。VS和Office并不會(huì)一夜間都變成托管代碼,因?yàn)檫€有不少遺留代碼尚存,但新寫的大部分都是托管代碼。
一些調(diào)查機(jī)構(gòu)表示VB.NET與C#開發(fā)者同工不同酬,前者薪酬要比后者少10-15%,我們認(rèn)為這是由于大家對(duì)VB.NET的認(rèn)識(shí)偏差造成的,這種觀念已經(jīng)根深蒂固了,因此還需加以時(shí)日才能讓大家看到這兩種語言其實(shí)是一樣的,他們都是微軟的親生骨肉。下面來講解一下關(guān)于數(shù)數(shù)組的問題。
對(duì)數(shù)組進(jìn)行操作的能力在任何編程語言中都很重要。VB.NET與其它語言相似,提供了簡(jiǎn)單的途徑對(duì)數(shù)據(jù)進(jìn)行分組,將它們存放到數(shù)組結(jié)構(gòu)中。本文中,我們將回顧數(shù)組的聲明和使用。
VB.NET數(shù)組數(shù)組的目的
數(shù)組通常用于存儲(chǔ)相似類型的值和對(duì)象。它允許對(duì)變量進(jìn)行分組,并且允許使用索引進(jìn)行檢索。數(shù)組有上界和下界,它用于指示數(shù)組的開始索引值和結(jié)束索引值。另外,數(shù)組中的數(shù)據(jù)可以按序排列。簡(jiǎn)單的數(shù)組是一維的,當(dāng)然,在VB.NET中也可以使用多維數(shù)組。還可以對(duì)數(shù)組進(jìn)行循環(huán),以確定或修改存儲(chǔ)在數(shù)組中的某個(gè)值。
VB.NET數(shù)組的聲明和初始化
有兩個(gè)途徑初始化數(shù)組:***,在一條聲明語句中進(jìn)行聲明同時(shí)初始化;第二,先聲明數(shù)組,然后對(duì)其進(jìn)行初始化。
在一條語句中同時(shí)聲明和初始化數(shù)組時(shí),必須指定數(shù)組元素的數(shù)值類型,以及數(shù)組所包含元素的個(gè)數(shù)。VB.NET中,數(shù)組是基于0的,這也就是說,數(shù)組的索引編號(hào)從0開始,其后元素進(jìn)行連續(xù)編號(hào)。必須通過指定數(shù)組的上界確定數(shù)組中元素個(gè)數(shù)。上界是指定數(shù)組中***一個(gè)元素索引的數(shù)字。Listing A給出了整型數(shù)組的聲明和初始化示例。
對(duì)數(shù)字進(jìn)行聲明和初始化的另外一個(gè)途徑是:在分開的兩步中分別進(jìn)行聲明和初始化操作。如果聲明了一個(gè)數(shù)組,但是在這一行沒有指定其大小,則在初始化時(shí),需要對(duì)數(shù)組中的每一個(gè)單元都指定值。初始化值封裝在{}括號(hào)中,兩個(gè)值之間使用逗號(hào)做為分隔符。Listing B給出了在不同的兩步對(duì)數(shù)組進(jìn)行聲明和初始化的示例。
VB.NET數(shù)組的聲明和初始化一旦完成,則可以在運(yùn)行時(shí)重新定義數(shù)組,從而改變其大小。可以使用ReDim聲明改變數(shù)組結(jié)構(gòu)中元素的個(gè)數(shù)。Listing C給出了聲明、初始化和重新調(diào)整數(shù)組大小的示例。默認(rèn)情況下,數(shù)組進(jìn)行重新初始化后,原來的數(shù)值都會(huì)丟失。但是,在重新初始化時(shí),可以使用ReDim聲明和Preserve關(guān)鍵字保留數(shù)組的原有數(shù)值。Listing D中給出了一個(gè)這樣的示例。有兩種類型的多維數(shù)組:矩形的或鋸齒形的。矩形數(shù)組中,每一維的成員向其它維擴(kuò)展時(shí),增加相同的長(zhǎng)度。而在鋸齒形數(shù)組中,每一維中的單個(gè)成員以不同長(zhǎng)度向其它維擴(kuò)展。數(shù)組的維數(shù)越多,其操作也相應(yīng)越復(fù)雜。
【編輯推薦】