真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vb.net接口繼承 c# 接口繼承接口

vb.net怎么通過(guò)接口調(diào)用其它類(lèi)到這個(gè)類(lèi)中。

dim objEye as IEye = new Eye(); '用接口型引用,new 實(shí)現(xiàn)類(lèi)的對(duì)象。

發(fā)展壯大離不開(kāi)廣大客戶(hù)長(zhǎng)期以來(lái)的信賴(lài)與支持,我們將始終秉承“誠(chéng)信為本、服務(wù)至上”的服務(wù)理念,堅(jiān)持“二合一”的優(yōu)良服務(wù)模式,真誠(chéng)服務(wù)每家企業(yè),認(rèn)真做好每個(gè)細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及工商代辦等,在網(wǎng)站建設(shè)、營(yíng)銷(xiāo)型網(wǎng)站、WAP手機(jī)網(wǎng)站、VI設(shè)計(jì)、軟件開(kāi)發(fā)等項(xiàng)目上具有豐富的設(shè)計(jì)經(jīng)驗(yàn)。

messagebox.show(objEye.IEye) '調(diào)用屬性

vb 和 vb.NET 哪一個(gè)好?

分類(lèi): 電腦/網(wǎng)絡(luò) 程序設(shè)計(jì) 其他編程語(yǔ)言

解析:

兩個(gè)雖然有相同之處 但是不是一回事。。。。

看看相關(guān)技術(shù)文章就知道了

作為VB6.0的后續(xù)版本,VB.NET更加穩(wěn)定,而且完全面向?qū)ο蟆R苍S你還記得,VB6.0部支持繼承、重載和接口,所以不是真正面向?qū)ο蟮?。而VB.NET則支持這些面向?qū)ο筇匦?。VB6.0有兩個(gè)薄弱環(huán)節(jié)——多線程和異常處理。在VB.NET中,開(kāi)發(fā)多線程應(yīng)用和使用C++/C#別無(wú)二致,結(jié)構(gòu)化異常處理也得到支持。

象、封裝、多態(tài)、繼承是面向?qū)ο笳Z(yǔ)言的四個(gè)基本屬性。VB6.0不支持繼承,而VB.NET則不然。所以,和C++一樣,VB.NET也是完全面向?qū)ο蟮木幊陶Z(yǔ)言。

522006/0705/78459

vb.net和vb編程的區(qū)別

vb.net是完全面向?qū)ο蟮恼Z(yǔ)言,支持面向?qū)ο蟮乃膫€(gè)基本屬性:抽象,繼承,多態(tài),封裝,但vb是面向過(guò)程的語(yǔ)言,它只支持部分面向?qū)ο蟮膬?nèi)容像多態(tài),接口等。從 VB 7.0 之后的版本俗稱(chēng) VB.NET,來(lái)源于微軟的.NET戰(zhàn)略,到現(xiàn)在為止有三個(gè)版本

VB 7.0 即VB 2002,對(duì)應(yīng).NET Framework 1.0的版本

VB 7.1 即VB 2003,對(duì)應(yīng).NET Framework 1.1的版本

VB 8.0 即VB 2005,對(duì)應(yīng).NET Framework 2.0的版本

除了語(yǔ)法和使用習(xí)慣的繼承,VB 6.0之前的版本和VB 7.0之后的版本完全沒(méi)有聯(lián)系,幾乎沒(méi)有相同之處,兩種不同體系的語(yǔ)言

VB.NET接口屬性值丟失

在TextBox控件可用的最大長(zhǎng)度設(shè)定在輸入文本框中的字符數(shù)。輸入的字符數(shù)超過(guò)最大長(zhǎng)度時(shí),系統(tǒng)不接受額外的字符,并發(fā)出蜂鳴聲

接口的VB.NET( 一款行業(yè)軟件)接口

在VB.NET的類(lèi)里,實(shí)現(xiàn)一個(gè)接口的語(yǔ)句是:

implements接口名稱(chēng)

例如,下面定義一個(gè)車(chē)(總稱(chēng))的接口,這里的車(chē)是各種車(chē)的總稱(chēng):

Public Interface ICar

Property color() As String

Property speed() As Long

Sub PrintInfo()

End Interface

然后在不同類(lèi)型的“車(chē)”類(lèi)里實(shí)現(xiàn)它:

Public Class A_Car

Implements ICar

Dim m_color As String, m_speed As Long

Public Property color() As String Implements ICar.color

Get

Return m_color

End Get

Set(ByVal Value As String)

m_color = Value

End Set

End Property

Protected Overrides Sub Finalize()

MsgBox(I was deconstructed!)

End Sub

Public Sub New()

m_color = Red

m_speed = 210

MsgBox(I was constructed!)

End Sub

Public Property speed() As Long Implements ICar.speed

Get

Return m_speed

End Get

Set(ByVal Value As Long)

m_speed = speed

End Set

End Property

Public Sub PrintInfo() Implements ICar.PrintInfo

MsgBox(Color: m_color vbNewLine Speed: m_speed, MsgBoxStyle.Information)

End Sub

End Class

在 Form 的 Load 事件中編寫(xiě):

Dim myCar As New A_Car

myCar.PrintInfo()

運(yùn)行之后就創(chuàng)建了一個(gè) A_Car 類(lèi)的實(shí)例 myCar,然后出現(xiàn)兩個(gè)對(duì)話框,分別說(shuō)明實(shí)例已經(jīng)創(chuàng)建和汽車(chē)的信息。當(dāng)窗體卸載時(shí),這個(gè)類(lèi)的實(shí)例 myCar 將自動(dòng)銷(xiāo)毀,這時(shí)將出現(xiàn)一個(gè)“I was deconstructed!”的對(duì)話框。

聲明一個(gè)接口時(shí),需要考慮以下幾點(diǎn):

1.接口主體只限于對(duì)方法,索引器以及屬性的聲明;

2.接口成員是隱式公開(kāi)的,如果對(duì)其顯式指定訪問(wèn)級(jí)別,就會(huì)出現(xiàn)編譯器錯(cuò)誤;

3.接口中不能包含字段,構(gòu)造函數(shù)和常量等;

4.在接口中不能實(shí)現(xiàn)任何方法,屬性或者索引器;

5.在指定方法時(shí),只需要給出返回類(lèi)型,名稱(chēng)和參數(shù)列表,然后分號(hào)結(jié)束。

面向?qū)ο蟮慕涌?/p>

在C++中,一個(gè)類(lèi)被允許繼承多個(gè)類(lèi)。但是在Java以后的語(yǔ)言不被允許。

這樣,如果想繼承多個(gè)類(lèi)時(shí)便非常困難。所以開(kāi)發(fā)方想出了新辦法:接口。

一個(gè)接口內(nèi),允許包含變量、常量等一個(gè)類(lèi)所包含的基本內(nèi)容。但是,接口中的函數(shù)不允許設(shè)定代碼,也就意味著不能把程序入口放到接口里。由上可以理解到,接口是專(zhuān)門(mén)被繼承的。接口存在的意義也是被繼承。和C++里的抽象類(lèi)里的純虛函數(shù)是相同的。不能被實(shí)例化。

定義接口的關(guān)鍵字是interface,例如:

publicinterfaceMyInterface{

public void add(int x,int y);

public void volume(int x,int y,int z);

}

繼承接口的關(guān)鍵字是implements,相當(dāng)于繼承類(lèi)的extends。

需要注意的是,當(dāng)繼承一個(gè)接口時(shí),接口里的所有函數(shù)必須全部被覆蓋。例如:

class Demo implements MyInterface{

public void add(int x,int y){

System.out.println( +(x+y));

}

public void volume(int x,int y,int z){

System.out.println( +(x*y*z));

}

public static void main(String args[]){

Demo d=new Demo();

d.add(10,20);

d.volume(10,10,10);

}

}

輸出結(jié)果:

30

1000

當(dāng)想繼承多個(gè)類(lèi)時(shí),開(kāi)發(fā)程序不允許,報(bào)錯(cuò)。這樣就要用到接口。因?yàn)榻涌谠试S多重繼承(,),而類(lèi)不允許。所以就要用到接口。

vb和vb.net的區(qū)別

VB.NET和VB6.0有什么區(qū)別

Visual Basic .NET是Microsoft Visual Studio .NET套件中主要組成部分之一。.NET版本的Visual Basic增加了更多特性,而且演化為完全面向?qū)ο螅ň拖馛++)的編程語(yǔ)言。本文將介紹VB.NET的新特性,并比較VB6.0/VB.NET之間的區(qū)別,闡述如何利用VB.NET編寫(xiě)簡(jiǎn)單的應(yīng)用程序。

1.1 什么是 VB.NET? Microsoft推出全新的編程和操作系統(tǒng)Framework——.NET,支持多種語(yǔ)言利用公共.NET庫(kù)開(kāi)發(fā)應(yīng)用程序,這些應(yīng)用程序在.NET Framework上運(yùn)行。使用Visual Basic在.NET Framework上編程,這就是VB.NET。

首先,讓我演示在VB.NET中寫(xiě)最簡(jiǎn)單的控制臺(tái)程序:Hello World。

1.2 Hello, World!“Hello World!”是初學(xué)者學(xué)習(xí)Windows編程的代表性程序。我們的第一個(gè)程序就叫做“Hello VB.NET World!”。該程序在控制臺(tái)輸出一句話:“Hello VB.NET World!”,代碼如下所示:

代碼 1.1: Hello VB.NET World例子Imports System

Module Module1

Sub Main()

System.Console.WriteLine("Hello VB.NET World!")

End Sub

End Module

1.3 VB.NET 編輯器和編譯器你可以在記事本或VS.NET IDE等任意文本編輯器中撰寫(xiě)上述代碼,然后保存為HelloWorld.vb。 代碼編寫(xiě)完成之后,要么在命令行、要么在VS.NET IDE中編譯它。在Microsoft .NET Framework SDK中已經(jīng)包括VB.NET編譯器vbc.exe[][1],從IDE或是命令行都可以調(diào)用。要從命令行編譯HelloWorld.vb,請(qǐng)?jiān)诿钚写翱谳斎?/p>

vbc HelloWorld.vb /out:HelloWorld.exe /t:exe

編譯結(jié)束后,HelloWorld.exe被創(chuàng)建到當(dāng)前目錄下。在資源管理其中雙擊圖標(biāo)或在命令行執(zhí)行,程序正確地運(yùn)行了。祝賀你進(jìn)入VB.NET開(kāi)發(fā)者的行列。

Imports 語(yǔ)句

如你所知,大部分的.NET類(lèi)型都在名字空間(namespace)中定義。Namespace是定義和管理類(lèi)別的范疇。察看.NET Framework Class Library,可以看到數(shù)以百計(jì)的namespace。例如,System namespace就包括了Console、Object等類(lèi)型定義。如果想使用Console類(lèi),需要用Imports指令導(dǎo)入System namespace。如下所示:

Imports System甚至可以明確地調(diào)用namespace而無(wú)需用Import導(dǎo)入。下面的例子展示了不用Import的“Hello World!”程序:

代碼1.2: Hello VB.NET World例子Module Module1

Sub Main()

System.Console.WriteLine("Hello VB.NET World!")

End SubEnd Module1.4 解析 "Hello VB.NET World!"程序第一行是:

Imports System; System namespace定義了Console類(lèi),該類(lèi)用于讀寫(xiě)控制臺(tái)(命令行窗口)。然后你定義了一個(gè)module:Module Module1

…End Module所有的VB程序都包括一個(gè)Main()方法,即應(yīng)用程序入口點(diǎn)。在例子程序中,我們調(diào)用Console.WriteLine()向控制臺(tái)寫(xiě)入“Hello VB.NET World!”:

Sub Main()

Console.WriteLine(“Hello VB.NET World!”) End SubWriteLine()方法歸屬于Console類(lèi),它負(fù)責(zé)向控制臺(tái)寫(xiě)一個(gè)帶有行結(jié)束符的字符串。如前所述,Console類(lèi)定義于System namespace,你通過(guò)直接引用來(lái)控制類(lèi)成員。

Console類(lèi)負(fù)責(zé)讀寫(xiě)系統(tǒng)控制臺(tái)。讀控制臺(tái)輸入用Read和ReadLine方法,向控制臺(tái)輸出用WriteLine方法。

表1.1 Console類(lèi)定義的方法

方法 用途 例子

Read 讀入單個(gè)字符 int i = Console.Read();

ReadLine 讀入一行 string str = Console.ReadLine();

Write 寫(xiě)一行 Console.Write("Write: 1");

WriteLine 寫(xiě)一行,并帶上行結(jié)束符

Console.WriteLine("Test Output Data with Line");

1.5 VB.NET有什么新特點(diǎn)? VB.NET比 VB6.0更加穩(wěn)定,而且完全面向?qū)ο蟆R苍S你還記得,VB6.0不支持繼承、重載和接口,所以不是真正面向?qū)ο蟮?。而VB.NET則支持這些面向?qū)ο筇匦?。VB6.0有兩個(gè)薄弱環(huán)節(jié)——多線程和異常處理。在VB.NET中,開(kāi)發(fā)多線程應(yīng)用和使用C++/C#別無(wú)二致,結(jié)構(gòu)化異常處理也得到支持。稍后我們會(huì)詳細(xì)解釋這些特性。

下面是VB.NET的特性列表——

·面向?qū)ο蟮木幊陶Z(yǔ)言。支持繼承、重載、接口、共享成員和構(gòu)造器?!ぶС炙械腃LS特性,如存取控制.NET類(lèi)、與其它.NET語(yǔ)言交互、元數(shù)據(jù)、公共數(shù)據(jù)類(lèi)型、委托等等?!ざ嗑€程支持。·結(jié)構(gòu)化異常處理。 1.6 名字空間與集合 前面討論了我們的第一個(gè)VB.NET程序。該程序中首先引人注意的是名字空間(namespace)。在.NET參考文檔中,你會(huì)發(fā)現(xiàn)每個(gè)類(lèi)都?xì)w屬于某個(gè)namespace。那么,namespace到底是什么?

一個(gè)namespace是類(lèi)和組件的邏輯組合,其目的在于將.NET class按類(lèi)別定義。微軟借用了C++ class packaging概念:namespace來(lái)描述這種組合。.NET Framework中的組件被稱(chēng)為集合(assembly)。全部.NET代碼在數(shù)百個(gè)庫(kù)文件(DLL)中定義。Namespace把a(bǔ)ssembly中定義的類(lèi)組織起來(lái)。一個(gè)namespace可以包括多個(gè)assembly,一個(gè)assembly也可以在多個(gè)namespace中定義。 namespace樹(shù)的根節(jié)點(diǎn)是System namespace。在.NET Library中,每個(gè)class都在一組相似的類(lèi)別中定義。例如,System.Data namespace只包括數(shù)據(jù)相關(guān)類(lèi)。同樣,System.Multithreading只包括多線程類(lèi)。

在使用.NET支持的語(yǔ)言(如C#、VB.NET、C++.NET等)創(chuàng)建新應(yīng)用程序時(shí),你會(huì)注意到每個(gè)應(yīng)用程序都被定義為一個(gè)namespace,而所有的class都?xì)w屬于這個(gè)namespace。通過(guò)引用這個(gè)namespace,其它應(yīng)用程序就能存取這些class。 在.NET中,代碼被編譯為中間語(yǔ)言(Intermediate Language,IL),assembly中存儲(chǔ)了IL代碼、元數(shù)據(jù)和其它資源文件。同一個(gè)assembly可以附屬于一個(gè)或多個(gè)Exe/DLL。所有的.NET庫(kù)都存儲(chǔ)在assembly中。

1.7 VB.NET: 完全面向?qū)ο蟮木幊陶Z(yǔ)言抽象、封裝、多態(tài)、繼承是面向?qū)ο笳Z(yǔ)言的四個(gè)基本屬性。VB6.0不支持繼承,而VB.NET則不然。所以,和C++一樣,VB.NET也是完全面向?qū)ο蟮木幊陶Z(yǔ)言。

Class 和 ModuleVB.NET用Class...End Class語(yǔ)句對(duì)創(chuàng)建class。每個(gè)VB.NET至少包括一個(gè)Module(模塊)。Module在Module…End Module語(yǔ)句對(duì)中實(shí)現(xiàn)。應(yīng)用程序的主要模塊是Main方法,亦即應(yīng)用程序入口點(diǎn)。

和VB6.0相似的地方是,都可以使用Function/Sub關(guān)鍵字定義方法。下面的例子顯示了如何創(chuàng)建class、添加方法,并從主程序調(diào)用方法: Imports System

Module Module1

Sub Main()

Dim cls As TestClass = New TestClass

Console.WriteLine(cls.MyMethod)

End Sub

Class TestClass

Function MyMethod() As String

Return "Test Method"

End Function

End Class

End ModuleProperty屬性(Property)是類(lèi)變量的公共描述。Property…End Property語(yǔ)句用以創(chuàng)建property。屬性的Get/Set方法分別用于取得和設(shè)置屬性值。下面的例子中,Data是TestClass的屬性。

Imports System

Imports System.Console

Module Module1

Sub Main()

Dim cls As TestClass = New TestClass

WriteLine(cls.MyMethod)

WriteLine(cls.Data)

cls.Data = "New Data"

WriteLine(cls.Data)

End Sub

End Module

Class TestClass

Private strData As String = "Some Data"

Function MyMethod() As String

Return "Test Method!"

End Function

' Adding Data property to the class

Public Property Data() As String

Get

Return strData

End Get

Set(ByVal Value As String)

strData = Value

End Set

End Property

重載VB.NET通過(guò)overload關(guān)鍵字支持方法重載。使用這個(gè)關(guān)鍵字,你可以定義同名但不同參數(shù)的方法。

類(lèi)成員訪問(wèn)域

除了原有的Private和Public,VB.NET引入了幾個(gè)新關(guān)鍵字。全部訪問(wèn)域關(guān)鍵字列表如下:

關(guān)鍵字 作用域

Private 限于class內(nèi)部

Public 可以從class外訪問(wèn)

Friend 限于class所屬的應(yīng)用程序內(nèi)

Protected 只能被class和其派生類(lèi)訪問(wèn)

Protected Friend 能被class、應(yīng)用程序和派生類(lèi)訪問(wèn)

繼承繼承是面向?qū)ο缶幊陶Z(yǔ)言中最常用的技術(shù)。繼承讓你能夠重用類(lèi)代碼和功能。

VB.NET支持繼承,而VB6.0則不支持。繼承的好處在于你能使用任何人編寫(xiě)的類(lèi),從這些類(lèi)派生自己的類(lèi),然后在自己的類(lèi)中調(diào)用父類(lèi)功能。在下面的例子中,Class B派生自Class A,我們將從Class B中調(diào)用Class A的方法MethodA。

Imports System

Imports System.Console

Module Module1

Sub Main()

Dim bObj As B = New B

WriteLine(bObj.MethodA())

End Sub

End Module

' Class A defined

Public Class A

Function MethodA() As String

Return "Method A is called."

End Function

End Class

'Class B, inherited from Class A. All members (Public and Protected)

' can be access via B now.

Public Class B

Inherits A

Function MethodB() As String

Return "Method B is called."

End Function

End Class

可以從一個(gè)class中派生多個(gè)自定義class,也可以從多個(gè)class派生一個(gè)自定義class。

共享的成員類(lèi)的共享成員被類(lèi)的所有實(shí)體共享。共享成員可能是屬性、方法或字段/值域。在你不想讓用戶(hù)全面控制自己的類(lèi)時(shí),共享成員相當(dāng)有用。例如,你可以開(kāi)發(fā)一個(gè)類(lèi)庫(kù),讓用戶(hù)通過(guò)共享成員使用其中的部分功能。

可以通過(guò)class本身引用共享成員,而無(wú)需通過(guò)類(lèi)的實(shí)體。例如:Module Module1

Sub Main()

WriteLine(A.MethodA())

End Sub

End Module

' Class A defined

Public Class A

Shared Function MethodA() As String

Return "Method A is called."

End Function

End Class

多線程VB語(yǔ)言的一大弱點(diǎn)就是缺乏編寫(xiě)自由線程(free-threaded)程序的能力。在.NET Framework中,所有語(yǔ)言共享CRL(Common Runtime Library,公共運(yùn)行庫(kù)),也就是說(shuō),你可以用VB.NET、C#或其它.NET語(yǔ)言編寫(xiě)同樣的程序。

System.Threading namespace定義了線程類(lèi)。我們只需要引入System.Threading namespace,即可使用線程類(lèi)。

System.Threading.Thread類(lèi)提供線程對(duì)象,可以使用Thread類(lèi)創(chuàng)建或破壞線程。

創(chuàng)建線程使用Thread類(lèi)的實(shí)體創(chuàng)建一個(gè)新線程,然后用Thread.Start方法開(kāi)始執(zhí)行線程。線程構(gòu)造器接受一個(gè)參數(shù),該參數(shù)指明你要在線程中執(zhí)行的procedure。在下例中,我想在oThread1(Thread類(lèi)的一個(gè)實(shí)體)的第二線程中執(zhí)行SecondThread過(guò)程:

oThread1 = New Thread(AddressOf SecondThread)

SecondThread procedure looks like below:

Public Sub SecondThread()

Dim i As Integer

For i = 1 To 10

Console.WriteLine(i.ToString())

Next

End Sub

然后,調(diào)用Thread.Start()開(kāi)始線程:

oThread1.Start()

下面的代碼創(chuàng)建兩個(gè)第二線程:

Imports System

Imports System.Threading

Module Module1

Public oThread1 As Thread

Public oThread2 As Thread

Sub Main()

oThread1 = New Thread(AddressOf SecondThread)

oThread2 = New Thread(AddressOf ThirdThread)

oThread1.Start()

oThread2.Start()

End Sub

Public Sub SecondThread()

Dim i As Integer

For i = 1 To 10

Console.WriteLine(i.ToString())

Next

End Sub

Public Sub ThirdThread()

Dim i As Integer

For i = 1 To 10

Console.WriteLine("A" + i.ToString())

Next

End Sub

End Module

破壞線程 調(diào)用Abort方法來(lái)破壞(中止)一個(gè)線程。在調(diào)用Abort之前,確保用IsAlive判斷線程處于活動(dòng)狀態(tài)。

If oThread1.IsAlive Then

oThread1.Abort()

End If

暫停線程可以使用Sleep方法來(lái)暫停線程執(zhí)行。Sleep方法接受一個(gè)以毫秒為單位的參數(shù),指明線程應(yīng)當(dāng)暫停多長(zhǎng)時(shí)間。

下面的例子讓線程暫停1秒鐘:

oThread2.Sleep(1000)你也可以使用Suspend和Resume方法來(lái)掛起和繼續(xù)線程執(zhí)行。

設(shè)定線程優(yōu)先級(jí)Thread類(lèi)的Priority屬性用于設(shè)定線程優(yōu)先級(jí)。該屬性可以設(shè)置為Normal,AboveNormal,BelowNormal,Highest和Lowest。如:

oThread2.Priority = ThreadPriority.Highest線程與Apartment使用ApartmentState屬性設(shè)置線程的apartment類(lèi)型,該屬性值可以為STA,MTA或是Unknown[][2]:

oThread.ApartmentState = ApartmentState.MTAMTS意味著可以使用多線程模式,而STA則只能是單線程執(zhí)行。

Public Enum ApartmentState

{

STA = 0,

MTA = 1,

Unknown = 2,

}

1.8 結(jié)構(gòu)化異常處理異常處理也被稱(chēng)之為錯(cuò)誤處理。作為VB程序員,你一定對(duì)On Error Goto和On Error Resume Next這些VB6.0錯(cuò)誤處理語(yǔ)句耳熟能詳。這種類(lèi)型的錯(cuò)誤處理被稱(chēng)為非結(jié)構(gòu)化異常處理(Unstructured Exception Handling)。而在VB.NET中,Microsoft推出了結(jié)構(gòu)化異常處理機(jī)制。VB.NET支持類(lèi)似C++的TryCatch..Finally控制。Try..Catch..Finally結(jié)構(gòu)如下: Try

' 可能導(dǎo)致異常的代碼

Catch

' 當(dāng)異常發(fā)生時(shí)處理異常的代碼

Finally

' 清理現(xiàn)場(chǎng)

End Try

Try語(yǔ)句塊用以拋出異常。如果異常發(fā)生,在Catch語(yǔ)句塊中處理。Finally語(yǔ)句塊是可選的,在需要釋放資源時(shí)特別有用。

1.9 VB6.0與VB.NET的不同之處除了上面談到的語(yǔ)言進(jìn)化,還有一些語(yǔ)法上的變化。所有這些語(yǔ)言和語(yǔ)法的變化在MSDN中均可查到,本文只作簡(jiǎn)單介紹。

數(shù)據(jù)類(lèi)型(Data Type)的改變VB.NET中有些數(shù)據(jù)類(lèi)型得到改進(jìn)。下面是變化對(duì)照表。

數(shù)據(jù)類(lèi)型 VB6.0 VB.NET

Integer 16 bit size 32 bit size

Long 32 bit size 64 bit size

Currency 用于存儲(chǔ)大浮點(diǎn)數(shù) 被decimal替代,支持更高精度

Variant 可以存儲(chǔ)任意類(lèi)型數(shù)據(jù) 被Object類(lèi)型替代,也可以存儲(chǔ)任意類(lèi)型數(shù)據(jù),但結(jié)果更好

Date Date類(lèi)型被存儲(chǔ)為double 引入DateTime類(lèi)型,用于存儲(chǔ)不同格式的日期

在VB.NET中,Short數(shù)據(jù)類(lèi)型是16 bit的。Short,Integer和Long都等同于CLR的System.Int16、System.Int32和System.Int64類(lèi)型。 變量聲明的變化在VB6.0中,變量聲明有許多限制。其中之一就是不能同行聲明多個(gè)變量。如果一定要在一行中聲明多個(gè)變量,就一定得指明每個(gè)變量的類(lèi)型,否則將被默認(rèn)為Variant類(lèi)型。

Dim a1, a2 As Integer Dim a3 As Integer, a4 As Integer 第一行中的a1是Variant類(lèi)型,a2是Integer類(lèi)型。第二行中兩個(gè)變量都是Integer類(lèi)型。VB.NET支持同行聲明多個(gè)變量,舉例如下:

Dim a1, a2, a3 As Integer 變量初始化是另一個(gè)問(wèn)題。在VB6.0中不能同時(shí)聲明和初始化變量,而VB.NET則支持這個(gè)特性。

Dim name As String = "Mahesh"System.Console.Write(name) 聲明常量也可以照此辦理:Const DT_COUNT As Integer = 23 New關(guān)鍵字。在VB.NET中,New關(guān)鍵字用于創(chuàng)建對(duì)象。由于數(shù)據(jù)類(lèi)型是對(duì)象,所以New關(guān)鍵字用以創(chuàng)建一個(gè)數(shù)據(jù)類(lèi)型對(duì)象。

Dim i As Integer = New Integer()i = 10System.Console.WriteLine(i.ToString()) 代碼塊級(jí)別支持。像C++一樣,VB.NET支持代碼塊級(jí)別的作用域檢查。在語(yǔ)句塊中聲明的變量只在塊內(nèi)有效。

For i = 1 To 10Dim p As LongSystem.Console.WriteLine(i.ToString())NextSystem.Console.WriteLine(p.ToString()) 這段代碼在VB.NET中會(huì)得到一個(gè)編譯錯(cuò)誤,因?yàn)閜在For..Next語(yǔ)句塊之外不可訪問(wèn)。在VB6.0中這段代碼可以通過(guò)。

改進(jìn)了的類(lèi)型安全

在VB6.0中,當(dāng)你聲明一個(gè)對(duì)外部過(guò)程的引用時(shí),可以指定任意類(lèi)型的參數(shù)為As Any。Any關(guān)鍵字禁止了類(lèi)型檢查,允許任意數(shù)據(jù)類(lèi)型傳入和返回。

VB.NET不支持Any關(guān)鍵字。你必須指定每個(gè)參數(shù)和返回值的數(shù)據(jù)類(lèi)型。數(shù)組VB.NET對(duì)數(shù)組作了明顯的改動(dòng)。

數(shù)組范圍。在VB.NET中,你需要格外留意數(shù)組范圍問(wèn)題。VB6.0默認(rèn)數(shù)組下界為0,故數(shù)組中的元素?cái)?shù)量等與數(shù)組上界值加一。下面的數(shù)組界限從A(0)到A(10),共有11個(gè)元素:

Dim A(10) As Single可以使用Option Base改變下界值為1。在VB.NET中,數(shù)組和C++一樣,下界值為0,不支持Option Base。注意:MSDN文檔指出數(shù)組只能包括與其尺寸相等的元素?cái)?shù)量,例如:Dim A(10) As Integer 只能包括10個(gè)元素(從A(0)到A(9)),但在編譯下面這段代碼時(shí)我發(fā)現(xiàn)它運(yùn)行良好,看起來(lái)數(shù)組中容納了11個(gè)元素。

Dim A(10) As Integer A(0) = 12 A(2) = 24 A(10) = 23 System.Console.WriteLine(A(0).ToString()) System.Console.WriteLine(A(10).ToString())System.Console.WriteLine(UBound(A).ToString()) System.Console.WriteLine(LBound(A).ToString()) Lbound和Ubound分別返回 0與10。ReDim和Fixed Array。你可以在VB6.0中指定固定長(zhǎng)度的數(shù)組。

Dim ArrWeekDays(0 To 6) As Integer

這里的ArrWeekDays數(shù)組是固定長(zhǎng)度的,不能用ReDim語(yǔ)句改變長(zhǎng)度。VB.NET不支持固定長(zhǎng)度數(shù)組,所以ReDim總是有效。

可以用下面兩種方式聲明數(shù)組: Dim ArrWeekDays(6) As IntegerDim ArrWeekDays() As Integer = {1, 2, 3, 4, 5, 6} ReDim語(yǔ)句。在VB6.0中,ReDim用于初始化動(dòng)態(tài)數(shù)組。在VB.NET中你不能把它當(dāng)作聲明用。ReDim只能用于改變數(shù)組長(zhǎng)度,不過(guò)不能改變數(shù)組維度。

Variant對(duì)陣ObjectVB6.0中的Variant數(shù)據(jù)類(lèi)型能存儲(chǔ)任意類(lèi)型變量,VB.NET中Object具備相同能力。

算術(shù)操作符VB.NET支持類(lèi)似C++的快捷方式。下面的表格顯示了常規(guī)操作與快捷操作的不同之處。快捷方式也可用于*、/、|、等操作符。

操作符 常規(guī)語(yǔ)法 快捷方式加法 A = A+5 A +=5 減法 A = A – 5 A -+ 5固定長(zhǎng)度字符串

在VB6.0中,可以在聲明字符串時(shí)指定其長(zhǎng)度。VB.NET不支持固定長(zhǎng)度字符串。

布爾操作符VB6.0中的And、Or或是Xor語(yǔ)句是按位操作符。而在VB.NET中,它們是布爾操作符。執(zhí)行這些操作將返回true或false。VB.NET引入新操作符來(lái)完成按位操作。

操作符 描述 BitAnd 按位AndBitOr 按位OrBitXor 按位XorBitNot 按位Not結(jié)構(gòu)與自定義類(lèi)型在VB6.0中,你使用Type…End Type語(yǔ)句塊創(chuàng)建結(jié)構(gòu)或自定義類(lèi)型。例如:

Type StdRec

StdId As Integer

StdName As String End Type

VB.NET引入新的語(yǔ)法:Structure。Type…End Type不再被支持。Structure…End Structure與C++用法相同??梢灾付ńY(jié)構(gòu)中每個(gè)元素的可訪問(wèn)域,如Public、Protected、Friend、Protected Friend、Private等。例如:

Structure StdRec

Public StdId As Integer Public StdName As String

Private StdInternal As String End StructureVB.NET中的Structures就像類(lèi)一樣,也可以擁有方法和屬性。New和Nothing關(guān)鍵字VB6.0中,AS New和Nothing關(guān)鍵字用于聲明一個(gè)對(duì)象并初始化它。 VB.NET不支持隱式創(chuàng)建對(duì)象。如前所言,甚至連數(shù)據(jù)類(lèi)型都是對(duì)象。你可以采用以下兩種方法創(chuàng)建數(shù)據(jù)類(lèi)型或?qū)ο螅?Dim i As Integer Dim i As Integer = New Integer() // Do something if i = Nothing Then End If 不支持Set語(yǔ)句VB6.0使用Set語(yǔ)句指派對(duì)象。例如:Set myObj = new MyObjectSet a = b在VB.NET中,不需要使用Set指派對(duì)象。例如:myObj = new MyObj()a = b過(guò)程(procedure)語(yǔ)法的變化在VB.NET中過(guò)程語(yǔ)法有了很多變化。例如類(lèi)似C++的過(guò)程調(diào)用方式、ByVal(傳值)為默認(rèn)類(lèi)型、Optional關(guān)鍵字、return語(yǔ)句等等。類(lèi)似C++的過(guò)程調(diào)用方式 VB6.0允許不用加圓括號(hào)調(diào)用過(guò)程(sub)。不過(guò),用Call語(yǔ)句調(diào)用函數(shù)或sub時(shí),一定要使用圓括號(hào)。例如:Dim I as IntegerCall EvaluateData(2, i) EvaluateData 2, i 在VB.NET中,所有的方法調(diào)用都需要圓括號(hào),而Call語(yǔ)句則是可選的。 ByVal是默認(rèn)參數(shù)類(lèi)型在VB6.0中,在調(diào)用函數(shù)或sub時(shí)ByRef(傳址)是默認(rèn)類(lèi)型。那意味著所有改變將反映到傳入的變量。VB.NET改變了這種方式。現(xiàn)在,默認(rèn)的參數(shù)類(lèi)型是ByVal(傳值)。 Optional關(guān)鍵字VB6.0使用Optional關(guān)鍵字可用來(lái)讓用戶(hù)決定傳入一個(gè)默認(rèn)值,之后在調(diào)用IsMissing函數(shù)判斷參數(shù)是否有效。 而在VB.NET中,每個(gè)可選參數(shù)必須聲明其默認(rèn)值,無(wú)需調(diào)用IsMissing函數(shù)。例如:Sub MyMethod(Optional ByVal i As Integer = 3)

Return語(yǔ)句VB.NET的Return語(yǔ)句與C++相似。使用Return語(yǔ)句把控制權(quán)從過(guò)程返還給調(diào)用者。在VB6.0中,Return語(yǔ)句與GoSub語(yǔ)句一起使用。VB.NET不再支持GoSub語(yǔ)句。流程控制的改變下面是VB.NET對(duì)流程控制語(yǔ)句的修改:1. GoSub不再受到支持。2. Call、Function和Sub語(yǔ)句均可用于調(diào)用過(guò)程。3. On ... GoSub和On ... GoTo語(yǔ)句不再受支持??梢允褂肧elect Case語(yǔ)句來(lái)替代。4. While ... Wend語(yǔ)句現(xiàn)在改為While…End While語(yǔ)句。不再支持Wend關(guān)鍵字。小結(jié) Visual Basic .NET是.NET版本的Visual Basic,已經(jīng)從根本發(fā)生了變化!通過(guò)本文你了解到VB6.0和VB.NET的區(qū)別是很大的,可以說(shuō)根本就是兩種不同的語(yǔ)言,因?yàn)樗鼈兊膬?nèi)核發(fā)生了變化,VB6.0是基于COM而vb.net是基于.net框架的,因?yàn)檫@個(gè)變化,所以在構(gòu)造類(lèi)時(shí)也發(fā)生了根本性的變化。


文章標(biāo)題:vb.net接口繼承 c# 接口繼承接口
本文URL:http://weahome.cn/article/hijpog.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部