軟糖來回答吧,VB.net用循環(huán)是這樣的

目前創(chuàng)新互聯(lián)已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站改版維護、企業(yè)網(wǎng)站設(shè)計、西峽網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
Dim?k?=?New?Integer(9)?{1,?2,?3,?4,?5,?6,?7,?8,?9,?10}
Dim?和?As?Integer
For?i?=?0?To?k.Count?-?1
和?+=?k(i)
Next
計算數(shù)組中各元素之和更簡單的方法是
使用擴展方法Sum或者Lambda表達式,以下兩種均可
Dim?和1?=?k.Sum()
Dim?和2?=?k.Aggregate(Function(m,?n)?m?+?n)
Visual Basic(VB)是由微軟公司開發(fā)的包含協(xié)助開發(fā)環(huán)境的事件驅(qū)動編程語言。它源自于BASIC編程語言。VB擁有圖形用戶界面(GUI)和快速應(yīng)用程序開發(fā)(RAD)系統(tǒng),可以輕易的使用DAO、RDO、ADO連接數(shù)據(jù)庫,或者輕松的創(chuàng)建ActiveX控件。程序員可以輕松的使用VB提供的組件快速創(chuàng)建一個應(yīng)用程序。
.NET Framework引入之前
VB 1
VB1.0的DOS版本
1991年4月,Visual Basic 1.0 for Windows版本發(fā)布。1992年9月,Visual Basic 1.0 for DOS版本發(fā)布。這個連接編程語言和用戶界面的進步被稱為Tripod(有些時候叫做Ruby),最初的設(shè)計是由阿蘭·庫珀(Alan Cooper)完成的。這在當(dāng)時引起了很大的轟動。許多專家把VB的出現(xiàn)當(dāng)做是軟件開發(fā)史上的一個具有劃時代意義的事件。以現(xiàn)在的眼光來看,VB1.0版的功能其實非常的弱,但它在推出當(dāng)時可是第一個“可視”的編程軟件。這使得程序員欣喜之極,都嘗試在VB的平臺上進行軟件創(chuàng)作。
VB 2
1992年11月,VB2.0發(fā)布。它對于上一個版本的界面和速度都有所改善。
VB 3
1993年夏天,VB3.0發(fā)布,分為標(biāo)準(zhǔn)版和專業(yè)版。其中包含一個數(shù)據(jù)引擎,可以直接讀取Access數(shù)據(jù)庫。這使得VB的數(shù)據(jù)庫編程能力大大提高。
VB 4
1995年8月,VB4.0發(fā)布了32位版本和16位的版本。其中包含了對類的支持。從VB4開始,逐步引入了面向?qū)ο蟮某绦蛟O(shè)計思想。VB功能強大,學(xué)習(xí)簡單。而且,VB還引入了“控件”的概念,使得大量已經(jīng)編好的VB程序可以被我們直接拿來使用。
Visual Basic 1.0~4.0 都必須將源代碼編譯成 VB 偽代碼后解釋執(zhí)行。
VB 5
1997年2月,VB5.0發(fā)布。程序員可以用32位的版本導(dǎo)入由4.0版本創(chuàng)建的16位程序,并且能順利編譯。同時還包含了對用戶自建控件的支持。自從 Visual Basic 5.0 以后,VB 支持編譯成本機代碼,但必須在 VB 運行庫的支持下工作。
VB 6
1998年夏天,VB6.0發(fā)布。VB6是VB.NET至今仍無法完全取代的版本。
.NET Framework引入之后
主條目:Visual Basic .NET
VB.NET 7
2001年,Visual Basic .NET和.NET Framework發(fā)布。由于其使用了新的核心和特性,所以很多VB的程序員都要改寫程序。
2002年 Visual Basic .NET 2002 (v7.0)問世,此后Visual Basic 包含在 Visual Studio 套裝中。
2003年 Visual Basic .NET 2003 (v7.1)推出。
VB.NET 8
2004年,微軟開放了Visual Studio.NET 2005的測試版本(代號Whidbey)。包含了.NET Framework2.0的測試版本。2005年11月7日 Visual Basic 2005 (v8.0) 發(fā)布,同時為初學(xué)者與學(xué)生提供 Visual Basic 2005 的免費簡化版本 Express Edition。原定免費使用期限一年,之后微軟宣布 Express 版本永久免費。Visual Basic 2005的“顯著”優(yōu)點是,可以直接編寫出 Windows XP 風(fēng)格的控件;但是其編寫的小程序就需要近 10MB 的內(nèi)存。
VB.NET 9
2008年2月1日 Visual Basic 2008 (v9.0) 發(fā)布。
通過幾年的發(fā)展,它已成為一種專業(yè)化的開發(fā)語言和環(huán)境。用戶可用 Visual Basic 快速創(chuàng)建 Windows 程序,現(xiàn)在還可以編寫企業(yè)水平的客戶/服務(wù)器程序及強大的數(shù)據(jù)庫應(yīng)用程序。
VB.NET 10
Visual Basic 10.0按計劃于2010年3月22日隨Visual Studio 2010一起正式發(fā)布。
新加入的功能:
自動實現(xiàn)屬性
集合初始化
不需要在代碼斷行書寫時輸入下劃線“_”
更好的lambda表達式支持
更好地與Python及Ruby等動態(tài)語言的互通操作
Visual Basic .NET 2002(7.0) 及以后的版本運行在 .NET Framework 環(huán)境下。
由VB派生的語言
微軟開發(fā)了一系列有關(guān)VB的腳本語言:
Visual Basic for Applications,即VBA,包含在微軟的應(yīng)用程序中(比如Microsoft Office),以及類似WordPerfect Office這樣第三方的產(chǎn)品里面。VBA這樣嵌入在各種應(yīng)用程序中看起來有些矛盾,但是它的功能和VB一樣強大。
VBScript是ASP的默認語言,還可以用在Windows腳本編寫(Shell Script)和網(wǎng)頁編碼(HTML)中。盡管它的語法類似于VB,但是它卻是一種完全不同的語言。VBS不使用VB運行庫運行,而是由Windows腳本宿主(wscript.exe - Microsoft Windows Based Script Host)解釋執(zhí)行。這兩種語言之中的不同點影響ASP網(wǎng)站的表現(xiàn)。
當(dāng)微軟準(zhǔn)備開發(fā)一種新的編程工具的時候,第一決定就是利用最搶手的 VB6 來進行修改,或者就是重新組建工程開發(fā)新工具。微軟后來開發(fā)了VB的繼任者Visual Basic .NET,同時也是.NET平臺的一部分。VB.NET編程語言是一種真正的面向?qū)ο缶幊陶Z言(VB4-VB6 只能稱為基于對象而不是面向?qū)ο螅蠲黠@的特征就是 VB4-VB6 都不支持類的繼承),和傳統(tǒng) Visual Basic 并不完全兼容。
語言特性
VB的中心思想就是要便于程序員使用,無論是新手或者專家。VB使用了可以簡單創(chuàng)建應(yīng)用程序的GUI系統(tǒng),但是又可以開發(fā)相當(dāng)復(fù)雜的程序。VB的程序是一種基于窗體的可視化組件安排的聯(lián)合,并且增加代碼來指定組建的屬性和方法。因為默認的屬性和方法已經(jīng)有一部分定義在了組件內(nèi),所以程序員不用寫多少代碼就可以完成一個簡單的程序。過去的版本里面VB程序的性能問題一直被放在了桌面上,但是隨著計算機速度的飛速增加,關(guān)于性能的爭論已經(jīng)越來越少。
窗體控件的增加和改變可以用拖放技術(shù)實現(xiàn)。一個排列滿控件的工具箱用來顯示可用控件(比如文本框或者按鈕)。每個控件都有自己的屬性和事件。默認的屬性值會在控件創(chuàng)建的時候提供,但是程序員也可以進行更改。很多的屬性值可以在運行時候隨著用戶的動作和修改進行改動,這樣就形成了一個動態(tài)的程序。舉個例子來說:窗體的大小改變事件中加入了可以改變控件位置的代碼,在運行時候每當(dāng)用戶更改窗口大小,控件也會隨之改變位置。在文本框中的文字改變事件中加入相應(yīng)的代碼,程序就能夠在文字輸入的時候自動翻譯或者阻止某些字符的輸入。
VB的程序可以包含一個或多個窗體,或者是一個主窗體和多個子窗體,類似于操作系統(tǒng)的樣子。有很少功能的對話框窗口(比如沒有最大化和最小化按鈕的窗體)可以用來提供彈出功能。
VB的組件既可以擁有用戶界面,也可以沒有。這樣一來服務(wù)器端程序就可以處理增加的模塊。
VB使用引用計數(shù)的方法來進行垃圾收集,這個方法中包含有大量的對象,提供基本的面向?qū)ο笾С帧R驗樵絹碓蕉嘟M建的出現(xiàn),程序員可以選用自己需要的擴展庫。和有些語言不一樣,VB對大小寫不敏感,但是能自動轉(zhuǎn)換關(guān)鍵詞到標(biāo)準(zhǔn)的大小寫狀態(tài),以及強制使得符號表入口的實體的變量名稱遵循書寫規(guī)則。默認情況下字符串的比較是對大小寫敏感的,但是可以關(guān)閉這個功能。
VB使得大量的外界控件有了自己的生存空間。大量的第三方控件針對VB提供。VB也提供了創(chuàng)建、使用和重用這些控件的方法,但是由于語言問題,從一個應(yīng)用程序創(chuàng)建另外一個并不簡單。
術(shù)語
在討論 Visual Basic(不包含 .NET)時,經(jīng)常可以聽到以下這些術(shù)語,因此掌握這些術(shù)語的基本理解對初學(xué)者十分有幫助。
控件:簡單的說,控件就是構(gòu)成或者說建造 Visual Basic 應(yīng)用程序的圖形化工具,包括窗體、按鈕、復(fù)選框、列表框、數(shù)據(jù)控件、表格控件和圖片控件等等……
事件:由用戶或操作系統(tǒng)引發(fā)的動作,例如擊鍵、單擊鼠標(biāo)(Click)、雙擊鼠標(biāo)(DblClick)、一段時間的限制,或從端口接收數(shù)據(jù)。
方法:嵌入在對象定義中的程序代碼,它定義對象怎樣處理信息并響應(yīng)某事件。例如,數(shù)據(jù)庫對象有打開紀錄集并從一個記錄移動到另一個記錄的方法程序的基本元素,它含有定義其特征的屬性,定義其任務(wù)和識別它可以響應(yīng)的事件的方法。控件和窗體是Visual Basic中所有對象的示例。
對象:一個控件、窗體等都可被看作一個對象。
過程:為完成某些特定的任務(wù)而編寫的代碼段,過程通常用于響應(yīng)特定的事件,也可以當(dāng)作應(yīng)用程序的用戶自定義函數(shù)來使用。
屬性:屬性是組成用戶界面的各對象的性質(zhì)的具體描述。例如上述“對象”中所提到的尺寸、位置、顏色、寬度、高度等等都稱為控件的屬性。屬性決定對象的外觀,有時也決定對象的行為。對象的屬性絕大部分是VB中已經(jīng)事先定義好的,但也有的屬性是需要在應(yīng)用過程中才去定義的。屬性即可為對象提供數(shù)據(jù),也能從對象取回信息。
VB.NET的變革
VB(6.0 及以前)不擁有的特性
繼承 (計算機科學(xué)):Visual Basic 5 以后,VB 雖然提供了簡化的類支持,但仍然不能滿足程序員的需求。
多線程支持:雖然可以使用Windows API完成,不過穩(wěn)定性與調(diào)試都很難保證。
異常處理:只支持"On Error Goto line"語句。
對指針的支持非常有限。
VB只能支持8到32位的整數(shù),很多語言都有無限制的支持。
VB不允許在任何數(shù)組存儲器在不變的變量。
VB不支持其它程序語言共享程序代碼。
Visual Basic .NET(VB 7.0)以后的版本基本支持了上述特性。
VB 6 與 VB.NET 比較
很多程序編寫者也會留戀VB6。VB6仍保留了一些script語言的特性,例如:不用事先聲明變量類型。 當(dāng)?shù)谝淮螌ξ绰暶黝愋偷淖兞窟M行賦值時,VB6便會把這個值的類型作為該變量的類型。這種script語言的特性,對程序的可維護有很多不良的影響,尤其對初階程序員來說,更會被培養(yǎng)成不良的編寫程序習(xí)慣,所以VB.NET之后的版本已不保留這種特性。
Basic是作為初學(xué)者的編程語言而被制作,當(dāng)時是以直譯式(參見VB 偽代碼)的形式出現(xiàn)。同樣擁有不用事先聲明變量類型的特性。這種特性對于幫助初學(xué)者快速入門,其實是有正面的作用,可以使初學(xué)者更快完成簡單的代碼編寫,而不用顧慮到程序要用哪些變量,要選哪些類型。對于有一定程序編寫經(jīng)驗的人來看,要經(jīng)常為for i=1 to 9中的變量i聲明類型也頗煩人,所以這種特性在某些場合上,是相當(dāng)討人歡心的。
VB.NET 的具體變革如下:
子程序(函數(shù))的定義與調(diào)用。
數(shù)組的初值設(shè)定并且需要注明范圍。
函數(shù)在格式上的改變:Date函數(shù)、Time函數(shù)、部分數(shù)學(xué)函數(shù)部分不能直接使用,String函數(shù)不能使用,DatePart、DateAdd、DateDiff函數(shù)的第一個參數(shù)在定義上有所改變。
Set保留字不再使用。
Wend保留字以End While取代。
新增運算符:+=、-=、/=、*=。
缺點
這樣大的變革一度被認為是微軟為了延長VB的生命力而做出的,結(jié)果把VB改得幾乎面目全非,成了一個類似于C#的新語言。VB6的程序幾乎無法運行在VB.NET中,盡管微軟針對該問題提供了“升級向?qū)А保矡o法執(zhí)行徹底的轉(zhuǎn)換。這樣,程序員不得不付出相當(dāng)大的精力,手工轉(zhuǎn)換代碼。
2005年,微軟宣布將不會再對非.NET版本的VB進行支持。VB社區(qū)立即作出反應(yīng)表示關(guān)心這個消息,一些老用戶還遞交了希望能夠繼續(xù)對VB進行技術(shù)支持的請愿書。微軟目前還不愿意改變他們的決定。
關(guān)于VB的爭議
反對者
VB是一種充滿了爭議的語言:很多程序員對VB程序的品質(zhì)有強烈的反感。很多人認為VB不配他們使用,認為它是一種給兒童和菜鳥程序員的語言。它自從設(shè)計開始就是一種簡單的語言。一些C++和Java中的特性在VB中并沒有出現(xiàn)。在感受開發(fā)的方便和快速的同時,一些類似于編譯時進行類型和聲明檢查的功能在默認情況下是關(guān)閉的。這樣一些程序員一邊感嘆VB的易用性,一邊沮喪地看著一些類似于“未定義類型”錯誤的發(fā)生。
一些批評家認為VB的簡單特性使得其在未來具有傷害性。很多人自學(xué)了VB,但是并沒有學(xué)到好的編程習(xí)慣。當(dāng)VB進入課堂的時候,學(xué)生們不會學(xué)到很多基礎(chǔ)的程序技術(shù)和結(jié)構(gòu),因為很多技術(shù)已經(jīng)包含在那些對用戶可見的組件里面了。不用學(xué)習(xí)標(biāo)準(zhǔn)的編程習(xí)慣,因為VB具有可視化的特性,所以導(dǎo)致了一些莫名其妙的代碼的產(chǎn)生。而且很多錯誤和警告的檢查默認情況下都是關(guān)閉的,程序員很難找到隱藏的錯誤。有經(jīng)驗的程序員在用VB編程的時候都會把這些選項打開。
很多批評家批評微軟簡單地拷貝了BASIC的思想到VB中。著名的計算機科學(xué)家艾茲格·迪科斯徹說過一句名言:“如果一個學(xué)生最早學(xué)過BASIC,那么幾乎不可能讓他學(xué)會優(yōu)秀的編程:因為這些人已經(jīng)放棄了重生的希望。”(Dijkstra對待Fortran、PL/1、COBOL和APL同樣也毫不留情。)另外一個笑話是:“真正的程序員不用BASIC。12歲以下的孩子才用。”
并不是非常簡便,它開發(fā)的程序只能運行在Microsoft Windows中。
文件太大了。Visual Studio要用好幾張盤才能裝下。VB程序在運行時候還需要一個1.4M大小的運行庫。
IDE中有錯誤。
VB不能很好的綜合Windows的基礎(chǔ)API,很多時候要使用低級運算的“小伎倆”來進行編程。而C語言的低級內(nèi)存運算比VB的要簡單得多。
支持者
但是很多VB的支持者解釋說VB的易用性就是它最大的優(yōu)勢,可以讓經(jīng)驗豐富的VB程序員或是剛剛懂得皮毛的人都能用自己的方式快速開發(fā)程序。而且VB的程序可以非常簡單的和數(shù)據(jù)庫連接。比如利用控件可以綁定數(shù)據(jù)庫,這樣一來用VB寫出的程序就可以掌握數(shù)據(jù)庫的所有信息而不用寫一行代碼。
很多語言的特性比如GoSub、On Error和用變量名字的最后一個字符判斷聲明類型(比如字符串型str$)都是從BASIC中來的。VB的語法和絕大部分語言都不同,可能會讓新的程序員混淆。比如聲明“Dim a, b, c As Integer”聲明了 c 為整形變量,但是 a,b 依然是 Variant(.NET 中為 Object)類型的。(如果想聲明 3 個 Integer,必須寫 Dim a As Integer, b As Integer, c as Integer;而直接寫Dim a,后面不寫類型,則自動變成Variant類型——占用大量資源。這個問題在 VB.NET 以后的版本已經(jīng)解決,Dim a, b, c As Integer的類型都將為整型)
還有一些特性,比如下劃線字符“_”支持一行代碼分多行寫。一些程序員在使用的時候由于不符規(guī)范而引起錯誤。
總結(jié)
VB會吸引更多的贊譽和批評,也會繼續(xù)為廣大的用戶和程序員使用。它非常適合用來開發(fā)擁有友好界面的程序(比如針對終端的數(shù)據(jù)),但是不適合開發(fā)其它程序(比如聯(lián)合計算程序)。
VB對初學(xué)編程者是一個很好的入門軟件,尤其對一些有編程才能而自己也不知道的人,由VB著手可輕易引發(fā)他們的潛能,發(fā)揮他們在這方面的才華。
C# 聲明個委托,再調(diào)用Invoke就行了
可以將委托指向一個寫好的方法,也可以用lambda表達式動態(tài)聲明委托。
Funcint method=()=Convert.ToInt32("5");
int result=method.Invoke();
將Word文檔嵌入到WinForm窗體顯示W(wǎng)ord文檔內(nèi)容
private void 打開ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog P_GetFile = new OpenFileDialog();//創(chuàng)建打開文件對話框?qū)ο?/p>
DialogResult P_dr = P_GetFile.ShowDialog();//顯示打開文件對話框
if (P_dr == DialogResult.OK)//是否點擊確定
{
WebBrowser.Navigate(P_GetFile.FileName);//打開Word文檔并顯示
}
}
//在Word文檔中插入圖片
private void btn_New_Click(object sender, EventArgs e)
{
btn_New.Enabled = false;//停用新建按鈕
ThreadPool.QueueUserWorkItem(//使用線程池
(P_temp) =//使用lambda表達式
{
G_wa = new Word.Application();//創(chuàng)建Word應(yīng)用程序?qū)ο?/p>
Word.Document P_wd = G_wa.Documents.Add(//建立新文檔
ref G_missing, ref G_missing, ref G_missing, ref G_missing);
Word.Range P_Range = P_wd.Paragraphs[1].Range;//得到段落范圍
object P_Ranges = P_Range;//創(chuàng)建ojbect對象
P_wd.InlineShapes.AddPicture(//向文檔中插入圖片
G_OpenFileDialog.FileName, ref G_missing, ref G_missing, ref P_Ranges);
G_str_path = string.Format(//計算文件保存路徑
@"{0}\{1}", G_FolderBrowserDialog.SelectedPath,
DateTime.Now.ToString("yyyy年M月d日h時s分m秒fff毫秒") + ".doc");
P_wd.SaveAs(//保存Word文件
ref G_str_path,
ref G_missing, ref G_missing, ref G_missing, ref G_missing,
ref G_missing, ref G_missing, ref G_missing, ref G_missing,
ref G_missing, ref G_missing, ref G_missing, ref G_missing,
ref G_missing, ref G_missing, ref G_missing);
((Word._Application)G_wa.Application).Quit(//退出應(yīng)用程序
ref G_missing, ref G_missing, ref G_missing);
this.Invoke(//開始執(zhí)行窗體線程
(MethodInvoker)(() =//使用lambda表達式
{
btn_Display.Enabled = true;//啟用顯示按鈕
MessageBox.Show("成功創(chuàng)建Word文檔!", "提示!");
}));
});
}
u3d支持c#和js兩種腳本,而且c#是最普遍的,咱們看unity用的編譯器,是c#的跨平臺開源編譯器mono,而且是unity更改過得mono,這個編譯器是基于c#.net2.0的語法的,但是由于unity的更改,使得它也支持了一些.net3.5的語法,比如匿名函數(shù)lambda表.
VB是微軟獨占的語言,而C#一開始是作為標(biāo)準(zhǔn)的姿態(tài)出現(xiàn)的,所以C#設(shè)計得更加嚴謹而VB則比較隨意。然而在后面的發(fā)展當(dāng)中,C#并不顧及自己的標(biāo)準(zhǔn)身份,每個版本都加入了許多新的feature,很多時候還是重復(fù)添加的冗余feature(比如delegate匿名函數(shù)和lambda表達式),以至于后來也就不再矜持,將VB上那些“不夠嚴謹”的功能一股腦全部加入了,例如static class,可選并帶默認值的參數(shù)列表,動態(tài)調(diào)用,static成員導(dǎo)入(例如using static System.Math,原本VB遠古就具有的Imports System.Math具有相同功能)等等。
而VB一開始是一種非常簡單的語言,在化進程中,為了.net化經(jīng)歷了數(shù)次巨大的設(shè)計改變,其中有很多feature的設(shè)計不知為何非常煩冗,例如MustInherit, NotOverridable等可讀性差的長關(guān)鍵字,多余的ByVal關(guān)鍵字,早先對符號的占用導(dǎo)致泛型語法變長等等。而且還保留了對VB6蹩腳的兼容性,導(dǎo)致語言的優(yōu)美程度急劇下降。VB2005時還曾經(jīng)計劃過一批奇葩的特性,后面大都沒有實現(xiàn)。當(dāng)然偶爾還是能看到一些亮點的設(shè)計(例如XML表達式,XML查詢,匿名類型自動實現(xiàn)GetHashCode等)。到VB2008開始VB組針對語言煩冗之處進行了大幅改進,新的類型推測Dim語句,可省略ByVal的寫法,隱式換行符的引進,以及新語法較為簡潔的設(shè)計設(shè)計都使得VB得到簡化但越來越和C#一致。所以當(dāng)時微軟就宣布以后兩種語言在主要功能上均會共同設(shè)計不再分離。
從VS2015開始VB和C#變得更加高度一致化,這是從Roslyn計劃開始后就更加明顯的行為。微軟目前對VB的態(tài)度就是和C#互為雙胞胎的語言。
本文名稱:vb.net+lamda的簡單介紹
當(dāng)前路徑:http://chinadenli.net/article47/dsesshj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、品牌網(wǎng)站設(shè)計、網(wǎng)站排名、云服務(wù)器、網(wǎng)站改版、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)