成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

關(guān)于vb.net對象擴展的信息

怎么用VB.NET更改文件擴展名

以修改“C:\abc.txt"為bat為例。

在威信等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計制作、成都做網(wǎng)站 網(wǎng)站設(shè)計制作按需設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營銷型網(wǎng)站,外貿(mào)網(wǎng)站制作,威信網(wǎng)站建設(shè)費用合理。

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim Myfile As String

Myfile = IO.Path.ChangeExtension("C:\abc.txt", ".bat")

Microsoft.VisualBasic.FileSystem.Rename("C:\abc.txt", Myfile)

End Sub

End Class

vb.net,知道一個文件的擴展名,如何通過這個擴展名獲得該文件的默認(rèn)打開方式(即默認(rèn)打開程序)?

如沒有現(xiàn)存的辦法的話只能讀取注冊表,以txt文件為類:

HKEY_CLASSES_ROOT\.txt?? '在這個地址有個默認(rèn)屬性值是:txtfile

HKEY_CLASSES_ROOT\txtfile\shell\open\command?? '這里的默認(rèn)屬性值txtfile的關(guān)聯(lián)程序:%SystemRoot%\system32\NOTEPAD.EXE %1

我暫不了解vb.net讀注冊表函數(shù)(剛在學(xué)),以vbs為類:

Dim?WshShell

Set?WshShell?=?WScript.CreateObject("Wscript.Shell")

Dim?Ext

ext=?WshShell.RegRead?("HKEY_CLASSES_ROOT\.mp3\") '這里的擴展名.mp3可以改成其它的看看

MsgBox?WshShell.RegRead?("HKEY_CLASSES_ROOT\"??ext??"\shell\open\command\")

vb.net的優(yōu)點是什么?

VB.NET是基于.NET框架的完全對向?qū)ο蟮木幊陶Z言,而vb 6.0只是半面向?qū)ο蟮恼Z言,使用vb.net可以編制出功能更加強大的windows程序?,F(xiàn)在,我們把vb.net和vb 6.0做一下比較,看看vb.net對比vb 6.0有著什么樣的特性和優(yōu)點。 1.在vb 6.0中,創(chuàng)建對象的時候,需要等這個對象創(chuàng)建完畢后,再另外調(diào)用一個獨立的方法對其進(jìn)行初始化。在vb.net中, 可以利用構(gòu)造函數(shù)為對象賦初值,這樣就不需要進(jìn)行煩瑣的調(diào)用賦初值了。構(gòu)造函數(shù)的使用,簡化了編碼的過程和出錯的機會。 2.vb.net編寫線程的能力比vb 6.0有很大的增強。 3.在vb 6.0中,需要首先聲明一個變量,然后才能對其賦值,這樣就需要寫兩行代碼。在vb.net中,可以 使用初始化函數(shù)將這兩個步驟合并在一行代碼中完成,這個似乎微小的改進(jìn),提供了更少、更簡單、更易于維護(hù)的代碼。 4.vb.net基于.NET框架,開發(fā)者可以快速的可視化開發(fā)網(wǎng)絡(luò)應(yīng)用程序、網(wǎng)絡(luò)服務(wù)、Windows應(yīng)用程序和服務(wù)器端組件。 5.因為vb.net是基于.NET框架的,可以與其它.NET語言協(xié)同工作。 6.在vb.net中,通過Web窗體及ADO.NET,開發(fā)者可以快速開發(fā)可擴展的Web站點。 如果你能進(jìn)一步學(xué)習(xí)vb.net,你會發(fā)現(xiàn)更多的新特性和優(yōu)點

為什么不能VB.Net找到一個接口擴展方法

由于漢語語言表述的所帶來的不易理解性,我們還是直接用代碼來解釋吧,如下的代碼片段:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

public static class StringExtentsion

{

public static string ToString(this string str)

{

return "Extentsion" + str;

}

}

class Program

{

static void Main(string[] args)

{

string str = "test";

Console.WriteLine(str.ToString()); // 輸出結(jié)果為: test,也就說編譯器會優(yōu)先選用原有類的實例化方法,如果沒找到匹配方法再尋找擴展方法

Console.Read();

}

}

由上述的代碼片段可以知:StringExtentsion類中擴展方法ToString 和 String類的原有的ToString方法 對于客戶端代碼而言,它們的語法表象是

一樣的,但本質(zhì)上一個是StringExtentsion類的靜態(tài)方法,一個是String類的實例化方法。然而編譯運行沒有產(chǎn)生錯誤,更沒有產(chǎn)生警告。所以在

這種情況下很容“埋雷”,一不小心就會中招。有人也許會說:我注意一下不要和.NET類庫的方法重名就可以了。但是你能保證 .NET 6、甚至.NET 10

的方法名和你寫的絕對不重名嗎?所以,擴展方法存在著版本控制的問題。

 

學(xué)VB還是VB.net好?

細(xì)說VB.NET(上)

(作者:青蘋果工作室編譯 2001年03月07日 14:47)

微軟公司提出的.NET概念,正從各個方面滲入到我們的生活中。它將產(chǎn)生的作用,

誠如一位業(yè)內(nèi)名家所描述的:“請忘掉你認(rèn)為你所知道的,.NET將改變一切”!既然如

此,無論是IT業(yè)內(nèi)人士、還是企業(yè)決策者,快速領(lǐng)會這個新概念的含義及深遠(yuǎn)影響,

都顯得非常必要。

概要

VB正在不斷地發(fā)展中,它具備了以前VB編程人員作夢都想擁有的性能,想象一下你

將隨心所欲的利用這些性能,是不是很令人激動?然而,這個計劃于2001年第四季度上

市銷售的VB版本可能會給你帶來些小麻煩,因為要完全掌握它需要一個較長的學(xué)習(xí)周期

,而且其中包括了一些微妙的變化,你可能在使用他們的時候出現(xiàn)錯誤。

需要準(zhǔn)備的條件:建議獲得Visual Basic.NET beta 版,這些內(nèi)容對所有VB程序員

都是有用的。

Microsoft .NET平臺的涵蓋面很廣,而且很難預(yù)測它的真正意義。我們注意到,現(xiàn)

在有很多關(guān)于.NET的不正確的理解。因此在這篇文章里,我們將把給你一個VB.NET到底

是些什么的概念,從頭到尾說一說它是什么、它能干什么以及怎樣才能充分發(fā)揮它的優(yōu)

點。我們要特別地細(xì)看一下IDE的改變、面向?qū)ο筇卣鳌⒌讓咏Y(jié)構(gòu)的改變、一些“現(xiàn)代化

”的語法以及包裝和分發(fā)方面的增強。我們將討論這些功能能為你做什么,解釋他們的

優(yōu)點與不足。由于這些改變是如此之大,而且涉及方方面面,因此希望這一篇文章能滿

足你全部的要求是不現(xiàn)實的,要了解這方面全部的知識請參閱有關(guān)文章和書籍。

Visual Basic.NET 和你現(xiàn)在所知的開發(fā)工具完全不同,并且這個新版本會改變你的

未來。到底有多大不同?如果你覺得從VB3遷移到VB4是一個很大的變化,那這次VB.NET

會讓你感到震驚。這次升級與其說是VB的一個新版本,還不如說是遷移到一個新平臺上

,你所面臨的情況就和從DOS遷移到Windows差不多。

VB獲得了繼承能力

VB.NET預(yù)期擁有的第一新功能就是繼承能力。繼承是VB開發(fā)者長期以來要求得最多

的功能。判斷一下對繼承的要求是不是像早些時候?qū)Ρ镜鼗幾g器的要求一樣將是一件

很有意思的事,后者,當(dāng)Microsoft提供了一個以后,你就幾乎聽不到多少這方面的言語

了。

Visual Basic現(xiàn)在是真正的面向?qū)ο笳Z言了。過去,你可以通過使用VB的界面繼承

性創(chuàng)建偽實現(xiàn)的對象繼承,但現(xiàn)在不必這樣做了。

Visual Basic.NET 現(xiàn)在提供大量面向?qū)ο蠊δ?,包括?yīng)用程序繼承,它允許你從其

它類導(dǎo)出你想創(chuàng)建的類。像在其它面向?qū)ο笳Z言里一樣,你能覆蓋基類的方法和屬性,

并且能實現(xiàn)多態(tài)以創(chuàng)建健壯的、擴展性好的組件。例如,假定你從基類 Crane里繼承產(chǎn)

生了一個ForkLift類,你能使用像下面的代碼覆蓋基類里對Lift方法的默認(rèn)實現(xiàn):

Public Class ForkLift

Inherits Crane

Overrides Sub Lift(ByRef _

Height As Double)

Height = Height + 10

End Sub

End Class

VB.NET不僅能讓你覆蓋方法或?qū)傩?;它還能讓你重載方法。重載是定義同名、但使

用不同數(shù)據(jù)類型的方法或?qū)傩缘哪芰?。例如,假定你有一個組件能對不同數(shù)據(jù)類型的數(shù)

組進(jìn)行排序,你不需要三個(每種數(shù)據(jù)類型一個)不同名的方法;實際上你可以重載一個

方法名:

Overloads Sub SortArray(ByRef _

aValues()As String)

...

Overloads Sub SortArray(ByRef _

aValues() As Integer)

...

Overloads Sub SortArray(ByRef _

aValues() As Object)

另一個改變是:表單現(xiàn)在是類模塊。這就是說類本身包含建立表單的所有“肥料”

的代碼。你可能想知道,為什么你不得不看到這些從前不用看的代碼,但這個改變同時

帶來強大的新功能,包括繼承這些表單的能力。Microsoft把這一技術(shù)稱為可視化繼承。

假定你的對話框有一種標(biāo)準(zhǔn)的格式,例如在表單的一側(cè)有一行按鈕,并在角上有一個標(biāo)

識,那么,通過可視化繼承你能創(chuàng)建一個表單模板(類),并從這個基類里導(dǎo)出所需的表

單。

一切都是對象

代碼復(fù)用簡化了開發(fā)過程,像實現(xiàn)和可視化繼承這樣的功能有利于更簡單、更強大

的代碼復(fù)用。然而,代碼復(fù)用并不是到此為止。你能通過支持VB.NET的通用語言運行庫

(Common Language Runtime - CLR)繼承在其它 VS.NET 語言里定義的類。例如,你或別

人創(chuàng)建了一個 C# 類,然后就能從 VB 里繼承它。

VB.NET 的面向?qū)ο竽芰U展了語言本身的通路:一切都是對象。這意味著比在以前

的 VB 版本里,你獲得了更多的內(nèi)在功能,你將很少被迫使用 Windows API。例如,在

以前的 VB 版本里,你使用 LoadPicture 方法加載圖片并使用表單的 Line 方法(或較

快的 API) 畫線。現(xiàn)在,你使用 System.Drawing 對象來創(chuàng)建并處理圖形。你可以使用

以下代碼在表單上顯示一幅圖片:

picshowpicture.Image = _

system.Drawing.Image.FromFile( _

"c:\test.bmp")

注意 VB.NET 的“一切都是對象”方式讓你的語句能用得更長久。

考慮以下語句,它在一個圖形對象上畫一條黃綠色的線:

objgraphics.DrawLine(system.Drawing. _

Pens.Chartreuse, 0, 0, 100, 100)

這些長長的語句也有好處:改進(jìn)的功能、適應(yīng)性和易用性。從前,你要實現(xiàn)先進(jìn)的

功能就不得不在文檔中挖掘,經(jīng)常是不得不訴諸API。現(xiàn)在,相關(guān)的功能集符合邏輯地包

含在對象里。這種處理方式的另外一個好處就是:類把相關(guān)的功能很好的組織了起來。

所以,瀏覽你感興趣的對象,發(fā)現(xiàn)它們做些什么實際上很有意思。

Visual Basic.NET 的面向?qū)ο蠊δ芴峁┝撕芏鄬嵲诘暮锰?。很多情況下,VB.NET

面向?qū)ο蟮谋举|(zhì)和實現(xiàn)的繼承性能幫助你比在以前的 VB 版本里更容易、更迅速地創(chuàng)建

特定類型的功能。然而,你不一定要僅僅因為你能做到,就使用實現(xiàn)繼承性或其它 .NE

T 功能。VB.NET 的新功能使開發(fā)許多類型的應(yīng)用程序變得更簡單!但是,就像使用所有

的語言能力一樣,你需要使用的是在特定場合下最適合的功能。

自由線程的危險

對于自由線程可能需要特別給出警告。VB6允許你使用獨立的線程來創(chuàng)建多線程服務(wù)

器程序,但VB過去從來沒有讓你能創(chuàng)建自由線程的客戶端程序。VB.NET 改變了這一切。

現(xiàn)在,創(chuàng)建自由線程應(yīng)用程序幾乎成了最微不足道的事情。實際上,我估計那些沒有理

解其中的微妙差別,就在他們的應(yīng)用程序里添加了自由線程的程序員會遇到很多問題。

只需要幾行代碼就能啟動一個新線程:簡單地將線索對象的地址傳遞給方法,方法本身

就會啟動線程。這確實是很酷也很有用的東西,但你需要小心:這些功能適用于特定的

場合,確定哪些是適用的場合并且明智的使用這些工具則是你自己的事。許多開發(fā)者使

用繼承性和自由線程時給自己找了不少麻煩,請不要讓這些發(fā)生在你身上。

可能大家討論得最多的 VB.NET 特征就是 CLR (通用語言運行庫),VB 運行在它的

頂層上。是 CLR 提供了 VB.NET 的許多關(guān)鍵功能。例如,CLR 使實現(xiàn)和跨語言繼承性以

及自由線程成為可能。

分發(fā)VB程序要求你同時分發(fā)VB的運行庫,在VB6里即是msvbvm60.dll。許多其它語言

也有類似的要求,包括 C++ 和 Java。在Visual Studio.NET里,所有的Visual Studio

語言共享同一個運行庫:CLR。這里有幾個較大的變化,首先,所有的Visual Studio語

言現(xiàn)在都共享同一個IDE、同樣的表單引擎、同樣的異常處理機制等等。這意味著Visua

l Basic和像 C#這樣的語言擁有同等的地位,至少差不多是同等的。

回復(fù):

細(xì)說VB.NET(中)

(作者:青蘋果工作室編譯 2001年03月07日 14:47)

易于反編譯的中間語言

無論你用VB、C#或其它.NET語言編寫應(yīng)用程序,VS.NET代碼都編譯成為中間語言(I

L)。當(dāng)應(yīng)用程序運行時,一個即時編譯器(JITter)處理IL代碼并把它編譯成為機器語言

。這意味著在理論上可能為Windows以外的平臺創(chuàng)建.NET運行庫,但現(xiàn)在關(guān)于類似的事情

還沒有任何官方消息。中間語言的一個缺陷是:它像VB5以前的VB版本一樣,容易被反編

譯。這種可能性使許多開發(fā)者普遍地質(zhì)疑.NET架構(gòu)的安全性。

CLR在IL層次內(nèi)外影響代碼,對它的修改將使所有使用CLR的語言受益。然而,語言

只是和代碼如何被解釋為IL有關(guān),對特定語言的優(yōu)化可以根據(jù)特定語言的語法來編寫,

這樣在技術(shù)上就可能使.NET語言之間的性能差別很小。不管怎樣,大體上藍(lán)圖是美好的

。例如,CLR使VB的調(diào)試和監(jiān)測工具和C#的相應(yīng)工具相當(dāng),它做到了這一點因為它們本來

就是相同的工具。

CLR提供不平行的跨語言集成,包括跨語言繼承代碼的能力。所有使用CLR的語言共

享一個通用類型系統(tǒng),它使使用多種語言開發(fā)應(yīng)用程序變得更簡單。我不喜歡把 C API

聲明翻譯成VB里可以使用的形式,所以我很贊賞通用類型系統(tǒng)帶來的好處。

在CLR中運行的代碼被稱為被管理代碼,被管理代碼使用的內(nèi)存完全由CLR來控制。

被管理代碼帶來很多好處,包括跨語言集成、跨語言異常處理和簡化的部件相互作用模

型。Visual Basic被限制為只能以被管理代碼的方式工作,然而C#擁有跳到非被管理代

碼的能力(執(zhí)行到運行庫之外),并能做像指針操作這類事情。這是VB和C#不同等的情況

之一。這種能力到底有多重要取決于你想干什么。

CLR造成的體系結(jié)構(gòu)差別要比跨語言集成、共享功能和被管理代碼等深刻。首先,V

isual Studio.NET的支撐結(jié)構(gòu)不是 COM。另外,VB.NET里的所有東西,甚至字符串都是

對象。因為這些和其它一些原因,Microsoft改變了支撐結(jié)構(gòu)處理對象的方式。COM實現(xiàn)

了一個引用計數(shù)方案,這樣每次引用一個對象時,計數(shù)器遞增。當(dāng)一個對象引用超出作

用域或被釋放時,計數(shù)器遞減,當(dāng)引用計數(shù)減少到零時就終止這個對象。Microsoft聲稱

在.NET架構(gòu)下引用計數(shù)的開銷太大,以至于不能在 .NET中實現(xiàn)它,所以它放棄了引用計

數(shù)轉(zhuǎn)而使用垃圾收集。

垃圾收集需要新體系結(jié)構(gòu)

CLR垃圾收集器主要是監(jiān)視一個程序的資源,當(dāng)可用資源達(dá)到確定的閾值時尋找無用

的對象,并在發(fā)現(xiàn)它們的時候清除這些對象。垃圾收集的一大好處就是你不再需要擔(dān)心

大多數(shù)普通的循環(huán)引用,即子對象引用了父對象,然后父對象又引用了子對象。在引用

計數(shù)方案下,循環(huán)引用使兩個對象都不能被釋放和清除。然而,垃圾收集器會發(fā)現(xiàn)循環(huán)

引用并清除它們。這也意味著釋放對象的最后一個引用時不再需要立即清除對象。

垃圾收集的一個后果是:你再也不能指望一個類的 Terminate 事件能在適當(dāng)?shù)臅r機

發(fā)出。實際上,如果線程被阻塞,可能根本就不會發(fā)出 Terminate 事件。和COM提供的

確定化終止相反,它被稱為不確定的終止。缺乏確定化終止,以及因為垃圾收集器重新

安排并壓縮內(nèi)存從而不能使用指針的事實,在新聞組里激發(fā)了一波激烈的辯論。我想這

些新限制可能會令你痛恨,因為你要依靠確定化終止;也可能你漠不關(guān)心,因為你不依

賴 Terminate 事件。垃圾收集并不是萬靈藥,實現(xiàn)弱引用依然需要做一些考慮。

從引用計數(shù)到垃圾收集只是 Visual Studio.NET 的支撐結(jié)構(gòu)不是 COM 這個事實的

表象之一。你能在VB.NET中使用COM對象,比如說ActiveX服務(wù)器或ActiveX控件。然而,

你必須通過包裝訪問這些對象。任何時候聽到“包裝”這個術(shù)語,你應(yīng)該明白你面對著

性能損失,并且對象的行為可能有所不同。如果當(dāng)計劃移植一個使用了大量COM對象的工

程,就需要認(rèn)真地測試和計劃,可能需要重新規(guī)劃應(yīng)用程序的結(jié)構(gòu)才能移植成功。坦率

地說,你要有遭受挫折的準(zhǔn)備。還記得從VBX遷移到 OCX的過程嗎?我記得,我的精神病

醫(yī)生也記得。我很快就要再去看他了 ;-)

語言本身的變化要遠(yuǎn)遠(yuǎn)超過體系結(jié)構(gòu)的變化。大部分改變確有道理,但我并不認(rèn)為

所有的改變都是如此。以前版本的VB允許你以很多方法來做很多事,以至于統(tǒng)一的編碼

標(biāo)準(zhǔn)要么不存在要么就很難強加于人。Microsoft對VB做了大量的改變?yōu)榈木褪恰扒逦?/p>

這種語言。很多情況下,原來你有好幾種方法做一件事,現(xiàn)在就只有一種了。Billy Ho

llis 提供了語法變化的詳細(xì)列表,包括廢棄的關(guān)鍵字列表,但有些東西需要在這里重復(fù)

一下。

首先,向過程參數(shù)傳遞數(shù)據(jù)的默認(rèn)方法由引用(ByRef)變成了傳值(ByVal)。這個改

變主要是因為引用要比傳值的風(fēng)險大得多。它的風(fēng)險主要是調(diào)用過程中的數(shù)據(jù)可能被無

意中篡改。你仍然能通過引用傳遞數(shù)據(jù),但這一改變使你需要修改新的默認(rèn)調(diào)用方法來

使用引用。

Set語句消失了

其次,Set 語句消失了。在 VB.NET 里如果你需要向變量傳遞一個對象引用,所需

要的只是一個等號,對象被視為同其它值一樣。這很酷,但也有副作用:默認(rèn)屬性消失

了。例如,你不再能用這種方式引用一個屬性:

Text1 = "What, me worry?"

作為替代,你必須顯式地引用屬性:

Text1.Text = "What, me worry?"

也許一眼看來不需要這種改變,但確實必須去掉默認(rèn)屬性。例如,假定你有一個叫

objFoo的對象變量,不用Set語句,下面的語句所設(shè)置的引用就產(chǎn)生了歧義性:

objFoo = Text1

這條語句是應(yīng)該設(shè)置到Text1的引用,還是以Text1的Text屬性來填充objFoo?你不

能確定,編譯器也不能。拋棄Set語句同時要求拋棄默認(rèn)屬性。

有一個改變我不喜歡:你不再能在不同的作用域里聲明Property Get和Property S

et過程。注意 VB.NET 沒有 Property Let 語句:對象和數(shù)值都用 Property Set。這意

味著你不能用一個 Friend Property Let 過程來對應(yīng)一個 Public Property Get。用V

B建立組件時可能會有麻煩。許多組件開發(fā)者創(chuàng)建 Friend Property Set 過程以使他們

的應(yīng)用程序能改變一個值,但提供 Public Property Get 過程以使他們的客戶程序能取

回值。我希望我能為這個改變找到一個合適的理由,可是我找不到。

Microsoft說它力圖使語言保持清晰并使之現(xiàn)代化—大部分情況下它做得不錯—但這

個作用域問題和其它幾個問題令人感到困惑。例如,While...Wend 很早以前就應(yīng)該消失

了,因為 Do...Loop 完成同樣的功能。然而,Microsoft 不僅沒能去掉 While...Wend

,還把它改成了 While...End While 來給自己找了更多的麻煩。真奇怪!

我最不喜歡的改變是:Microsoft改變了你已經(jīng)使用的數(shù)據(jù)類型含義。在 .NET 里,

Integer 現(xiàn)在是 32 位,而 Long 變成了 64 位。我心存恐懼地想:開發(fā)者 (包括我自

己) 會多么頻繁地使用錯誤的變量啊。那個API到底是接受一個16位的 Integer還是32位

的?老天!我希望Microsoft重新考慮這個決定并使用新的變量類型,比如Int32和Long

64。無論遷移到 VB.NET的移植工具是多么的好,它也不能改變開發(fā)者的記憶。為什么要

逼著我們再學(xué)一遍普通的數(shù)據(jù)類型呢?

最后,最需要的一個改變是:VB.NET引入了 Option Strict 關(guān)鍵字,你可以使用它

來代替 Option Explicit。Option Strict 結(jié)束了萬惡的類型強制(tm),通過它VB樂于

讓你把一個數(shù)值賦值給一個字符串,然后像犯罪一樣做另一個操作。設(shè)置 Option Stri

ct 告訴 Visual Basic.NET 不要為你做任何類型強制。注意 VB.NET 并不是徹底的控制

狂,它允許類型向下轉(zhuǎn)換,但不允許向上。例如,不使用像 sngvariable = CSng(dblv

ariable) 這樣的語句進(jìn)行顯式類型轉(zhuǎn)換,你就不能把聲明為 Single 的變量賦值給聲明

為 Double 的變量。因為這有丟失數(shù)據(jù)的風(fēng)險。然而,你能不使用顯式類型轉(zhuǎn)換就把聲

明為 Double 的變量賦值給聲明為 Single 的變量,因為這并沒有丟失數(shù)據(jù)的危險。使

用 Option Strict 能幫助開發(fā)者減少很多類型錯誤,包括那些很難調(diào)錯的。但有一個附

加的缺陷:在工程里使用了 Option Strict 后,就不能進(jìn)行 后編聯(lián)了。

回復(fù):

細(xì)說VB.NET(下)

(作者:青蘋果工作室編譯 2001年03月07日 14:47)

表單和新IDE面孔

Visual Basic.NET 的面向?qū)ο蠊δ芎軅ゴ?,但第一次啟?VB.NET 時還注意不到它

??赡苣阕⒁獾降牡谝患率撬?IDE。IDE看起來可能很熟悉,建立VS.NET IDE的團(tuán)隊

以前的工作是開發(fā)VB的IDE,對IDE的增強借鑒了VB IDE的經(jīng)驗。

同時,IDE的改變遠(yuǎn)比外表顯示的深刻。所有.NET語言使用相同的IDE,并且IDE中的

新工具功能強大又易于理解。你能把任何一個設(shè)計窗口設(shè)置為自動隱藏 (就像你能自動

隱藏Windows任務(wù)欄那樣),這樣就大大地減少了混亂。主工作區(qū)域是一系列選項卡,這

意味著IDE不再同時顯式多個表單和代碼模塊。當(dāng)打開對象的源代碼時,IDE在它的主工

作區(qū)域為工作的對象添加一個新的選項卡。

IDE還包括一個叫作任務(wù)表(Task List)的新窗口。它的內(nèi)容由IDE創(chuàng)建的項目組成。

例如,如果在試圖編譯一個工程時收到一個錯誤,VB在任務(wù)表里創(chuàng)建一個項目來解釋這

個錯誤。你能直接向任務(wù)表里添加項目,或者通過在代碼里以 "TODO:"開始一個注釋行

,你可以在代碼位置和任務(wù)之間建立聯(lián)系。我喜歡Microsoft實現(xiàn)任務(wù)表的方式;在程序

出爐前,都需要完成些什么?估計它能幫我省掉很多時間和麻煩。看到它時,你最容易

產(chǎn)生的一個想法就是:以前怎么就沒人想到它呢?

你能注意到的另一個變化就是:VB.NET的表單。Microsoft廢棄了舊的表單引擎而使

用Windows Form代替它。所有基于 CLR的語言都使用Windows Form引擎。相對于VB6的表

單引擎,它有幾個重要的改進(jìn)。例如,Windows Form讓你能創(chuàng)建能自動調(diào)整組件尺寸的

表單,并允許將控件錨定在表單里的特定位置。換句話說,不再需要使用第三方控件就

能完成這些特殊任務(wù)。Windows Form還允許表演像透明表單這樣的很酷的技術(shù)。

過去,VB隱藏了建立表單的所有魔術(shù)。你使用IDE設(shè)計表單并把代碼添加到Initial

ize事件上,但你沒有手段來控制這兩點之間的過程?,F(xiàn)在,表單就是一個類,它包含用

來建立表單所有的代碼。我把這些代碼稱為肥料代碼,因為大多數(shù)開發(fā)者希望遠(yuǎn)遠(yuǎn)離開

它們,越遠(yuǎn)越好。要想可靠地弄壞你的程序,沒有比折騰這些代碼更好的辦法了。另一

方面,技術(shù)嫻熟的用戶可以通過這些代碼做很多很酷的事,因為它讓你能走到VB.NET表

單的幕后。要是你不想看到這些代碼你也能不看,因為新代碼編輯器有展開和折疊代碼

區(qū)的功能,并且這些肥料代碼是默認(rèn)折疊的。代碼編輯器還有幾個很酷的新功能。例如

,現(xiàn)在它自動為你縮排所有代碼(而且還干得不錯),它還有內(nèi)置的顯示行號功能。

創(chuàng)建編譯的服務(wù)器端代碼

除了新的Windows Form引擎,.NET還包括一個為創(chuàng)建Web表單而特別設(shè)計的表單引擎

。這些被稱為Web Form的表單很聰明,就像VB讓你能很容易地為傳統(tǒng)Windows桌面應(yīng)用程

序創(chuàng)建表單一樣,它們讓你能方便地為Web創(chuàng)建表單。Web Form是 ASP.NET里的技術(shù),讓

你能使用熟悉的RAD工具創(chuàng)建帶有代碼的表單。創(chuàng)建的ASP.NET代碼編譯并駐留在服務(wù)器

上,并在那里被執(zhí)行,然后以HTML方式發(fā)送給任何一個支持HTML 3.2的瀏覽器。

底層結(jié)構(gòu)捕獲客戶端上的事件數(shù)據(jù),并把它發(fā)送給服務(wù)器。這意味著可以使用各種

用戶界面工具,可以利用現(xiàn)有的表單設(shè)計技巧,而且應(yīng)用程序界面是不依賴瀏覽器的。

如果可以放棄不依賴瀏覽器,你還有另一個選擇來利用Internet Explorer 某些功能特

有的優(yōu)勢。Web Form使支持Web的應(yīng)用程序能更容易地創(chuàng)建更好、更豐富多彩的用戶界面

。

Web服務(wù)策略

VB.NET里的另外一個重要的面向Web的功能是:Web服務(wù)。Microsoft的市場部門把W

eb服務(wù)列為采用.NET的幾大理由之一。實際上,Web服務(wù)的本質(zhì)就是使用標(biāo)準(zhǔn)協(xié)議的、由

Web服務(wù)器提供的、類似于COM的對象。注意在技術(shù)上它們并不是COM對象,但和COM對象

的表現(xiàn)方式很相像。Microsoft希望看到所有的公司使用Web服務(wù),并且未來的應(yīng)用程序

可以簡單地“粘”在不同的Web服務(wù)上,就像現(xiàn)在可以使用Visual Basic for Applicat

ions (VBA)建立基于Office和支持VBA的程序的解決方案一樣。

在PDC上,對于它希望開發(fā)者如何“粘”在這些服務(wù)上,Microsoft提供的一個演示

程序給出了很好的例子。在這個演示程序里,一個假想的診所通過Web服務(wù)提供預(yù)約系統(tǒng)

,演示了你可以怎樣使用智能電話通過Web進(jìn)行預(yù)約。Visual Basic.NET 甚至?xí)试S你

查詢服務(wù)器,并獲得關(guān)于服務(wù)器能支持的所有Web服務(wù)的相關(guān)數(shù)據(jù)。通過IntelliSense

dropdown這個絕對有用的工具,程序員可以訪問Web服務(wù)。Web服務(wù)是Microsoft雄心勃勃

的戰(zhàn)略,但只有時間才能檢驗它是否能成功地被廣泛接納。

Microsoft試圖消除與包裝和分發(fā)應(yīng)用程序相關(guān)的問題,包括令人恐懼的DLL。所有

.NET應(yīng)用程序被封裝為元件。元件包含著數(shù)據(jù)以描述它運行所需的東西。這些數(shù)據(jù)被稱

為貨單,包括很多信息,例如:元件身份(名稱、版本等等);一個列出了所有文件之間

的依賴關(guān)系的表,以及它們的位置和版本;包括DLL相關(guān)數(shù)據(jù)的外部依賴關(guān)系信息;還有

其它元件需要而開發(fā)者沒有創(chuàng)建的資源。元件是自說明的(通過它們的貨單),所以.NET

應(yīng)用程序不需要修改注冊表才能工作。換句話說,你不再需要注冊表組件。在最好的情

況下,即客戶機里已經(jīng)有了.NET運行庫時,分發(fā)一個復(fù)雜的應(yīng)用程序可能只是把一個文

件夾復(fù)制到目標(biāo)機器上這么簡單的事。元件的另一個好處是:你可以讓不同的應(yīng)用程序

使用同一個DLL的不同版本,并且協(xié)調(diào)地運行在一臺機器上。如果所有這些都可以像計劃

中那樣工作,有關(guān)DLL的地獄和版本的噩夢就將成為往事。

正確之路

Microsoft徹底更新了它的技術(shù),而不僅僅是核心語言。例如,在Visual Studio.N

ET里同時提供了ADO.NET,這是有特殊優(yōu)點的下一代ActiveX Data Objects (ADO) 版本

。它的一個靈活改變是:ADO.NET用Extensible Markup Language (XML)作為在組件之間

傳遞數(shù)據(jù)集的格式。這意味著接收組件不一定必須是ADO.NET組件,同時接收組件可以接

受任何XML 格式的數(shù)據(jù)集。談到XML,它支撐著VS.NET中的任何東西,從配置文件到遠(yuǎn)端

過程調(diào)用。ADO.NET在處理斷開的數(shù)據(jù)集時比 ADO的性能要好,并且具有更好的伸縮性。

Visual Basic.NET對我們都很熟悉的VB做了重要的改變。C++革命性地跳躍到.NET后

有了一個新名字:C#,而Visual Basic的名字沒變。然而,如果你把VB.NET當(dāng)作語法相

似的一門新語言而不是簡單的“升級”,可能掌握起來就要容易一些。本文給你一個起

點,但吸收掌握各種知識,并對未來做出有根據(jù)的決定是一個艱苦的過程,它只是這個

過程的一條起跑線。我不知道.NET會有多么成功,它的很多地方吸引我,但有些地方并

非如此。這個工具做了大量承諾,它夸耀很多功能能使 VB開發(fā)者更簡單地創(chuàng)建更有伸縮

性的高端應(yīng)用程序。最后,它的成功將取決于開發(fā)者能多好地將它應(yīng)用于現(xiàn)實世界??v

觀Microsoft在PDC和Beta 1版本之間的性能和穩(wěn)定性上所跨過的這一步,我堅定地認(rèn)為

:Microsoft走對了路!

Vb.net 擴展方法怎么用啊 比方說:一個List a a.where(?) 里面怎么寫

樓主您好,這個拓展方法是為LinQ服務(wù)的,用來在集合內(nèi)篩選數(shù)據(jù)

比如有一個List(Of Integer)

類型的scoreList對象,里面存有學(xué)生的考試成績。如果我要輸出

大于等于60分的成績,可以這樣:

Dim r=(From s in scoreList Where s=60 Select s).ToList()

For Each e In r

Console.WriteLine(e)

Next

第一句實際編譯為對集合的Where等拓展方法的調(diào)用

本文標(biāo)題:關(guān)于vb.net對象擴展的信息
文章分享:http://jinyejixie.com/article18/dodoggp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、品牌網(wǎng)站設(shè)計服務(wù)器托管、軟件開發(fā)自適應(yīng)網(wǎng)站、全網(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)

成都網(wǎng)頁設(shè)計公司
万荣县| 秀山| 苏尼特左旗| 乌鲁木齐市| 建湖县| 那坡县| 清河县| 淮滨县| 庆安县| 新民市| 定兴县| 鹿泉市| 灵武市| 西城区| 麻江县| 营山县| 赣州市| 保定市| 青田县| 永和县| 天门市| 台安县| 湘潭县| 芒康县| 衡水市| 土默特右旗| 罗江县| 亚东县| 井冈山市| 井冈山市| 龙陵县| 友谊县| 新乡县| 衡阳市| 枞阳县| 六安市| 阿尔山市| 洛宁县| 德保县| 洛隆县| 湘阴县|