欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线

vb和net常量對照表 vb常量有哪些

vb和vb.net的區別和特點

1、vb.net ?完全符合面向對象的編程語言抽象、封裝、繼承的四大特性,而vb不支持繼承。

創新互聯建站-專業網站定制、快速模板網站建設、高性價比雨城網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式雨城網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋雨城地區。費用合理售后完善,10余年實體公司更值得信賴。

2、錯誤處理不同。

vb中只是On Error.....goto和On Errer Resume Next ,這些錯誤稱為非結構化異常處理。而在vb.net中采用的結構化異常處理機制,try...catch....finally控制。

3、兩者產生的窗體不同。

vb.net 允許創建不同類型的應用程序,例如,創建ASP.NET和ASP.NET Web 服務應用程序,還允許創建控制臺應用程序和作為桌面服務運行的應用程序。但是vb 只能創建Windows窗體。

4、數據庫訪問的差別。

vb6.0是通過ADO(Active X Data Objext)來實現對數據庫訪問。而vb.net 是通過ADO.NET來訪問數據庫。

擴展資料

Visual Basic(簡稱VB)是Microsoft公司開發的一種通用的基于對象的程序設計語言,為結構化的、模塊化的、面向對象的、包含協助開發環境的事件驅動為機制的可視化程序設計語言。是一種可用于微軟自家產品開發的語言。

“Visual” 指的是開發圖形用戶界面 (GUI) 的方法——不需編寫大量代碼去描述界面元素的外觀和位置,而只要把預先建立的對象add到屏幕上的一點即可。

“Basic”指的是 BASIC (Beginners All-Purpose Symbolic Instruction Code) 語言,是一種在計算技術發展歷史上應用得最為廣泛的語言。

Visual Basic源自于BASIC編程語言。VB擁有圖形用戶界面(GUI)和快速應用程序開發(RAD)系統,可以輕易的使用DAO、RDO、ADO連接數據庫,或者輕松的創建Active?X控件,用于高效生成類型安全和面向對象的應用程序 。

參考資料:百度百科-Visual Basic

vb中的常量分哪兩種?

不是2種

vb中的常量可以分為:

1.直接常量 

直接常量可分為: 數值常量、字符串常量、布爾常量、日期常量。

2.符號常量

符號常量可分為: 系統內部常量和自定義常量(系統內部常量也不用自己定義)

自定義常量格式如下:

[Public|private]const 常量名[as 數據類型]=表達式

例如:

Const PI=3.1415926

在下面的程序中用到PI就代表3.1415926

Const PI=3.1515926

Private Sub Form_Click()

a! = 5#

b! = 2.5

c! = 7.8

Dim y As Double

y = (PI * a * b) / (a + b * c)

Print y

End Sub

vb和vb.net的區別

VB.NET和VB6.0有什么區別

Visual Basic .NET是Microsoft Visual Studio .NET套件中主要組成部分之一。.NET版本的Visual Basic增加了更多特性,而且演化為完全面向對象(就像C++)的編程語言。本文將介紹VB.NET的新特性,并比較VB6.0/VB.NET之間的區別,闡述如何利用VB.NET編寫簡單的應用程序。

1.1 什么是 VB.NET? Microsoft推出全新的編程和操作系統Framework——.NET,支持多種語言利用公共.NET庫開發應用程序,這些應用程序在.NET Framework上運行。使用Visual Basic在.NET Framework上編程,這就是VB.NET。

首先,讓我演示在VB.NET中寫最簡單的控制臺程序:Hello World。

1.2 Hello, World!“Hello World!”是初學者學習Windows編程的代表性程序。我們的第一個程序就叫做“Hello VB.NET World!”。該程序在控制臺輸出一句話:“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等任意文本編輯器中撰寫上述代碼,然后保存為HelloWorld.vb。 代碼編寫完成之后,要么在命令行、要么在VS.NET IDE中編譯它。在Microsoft .NET Framework SDK中已經包括VB.NET編譯器vbc.exe[][1],從IDE或是命令行都可以調用。要從命令行編譯HelloWorld.vb,請在命令行窗口輸入

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

編譯結束后,HelloWorld.exe被創建到當前目錄下。在資源管理其中雙擊圖標或在命令行執行,程序正確地運行了。祝賀你進入VB.NET開發者的行列。

Imports 語句

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

Imports System甚至可以明確地調用namespace而無需用Import導入。下面的例子展示了不用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類,該類用于讀寫控制臺(命令行窗口)。然后你定義了一個module:Module Module1

…End Module所有的VB程序都包括一個Main()方法,即應用程序入口點。在例子程序中,我們調用Console.WriteLine()向控制臺寫入“Hello VB.NET World!”:

Sub Main()

Console.WriteLine(“Hello VB.NET World!”) End SubWriteLine()方法歸屬于Console類,它負責向控制臺寫一個帶有行結束符的字符串。如前所述,Console類定義于System namespace,你通過直接引用來控制類成員。

Console類負責讀寫系統控制臺。讀控制臺輸入用Read和ReadLine方法,向控制臺輸出用WriteLine方法。

表1.1 Console類定義的方法

方法 用途 例子

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

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

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

WriteLine 寫一行,并帶上行結束符

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

1.5 VB.NET有什么新特點? VB.NET比 VB6.0更加穩定,而且完全面向對象。也許你還記得,VB6.0不支持繼承、重載和接口,所以不是真正面向對象的。而VB.NET則支持這些面向對象特性。VB6.0有兩個薄弱環節——多線程和異常處理。在VB.NET中,開發多線程應用和使用C++/C#別無二致,結構化異常處理也得到支持。稍后我們會詳細解釋這些特性。

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

·面向對象的編程語言。支持繼承、重載、接口、共享成員和構造器。·支持所有的CLS特性,如存取控制.NET類、與其它.NET語言交互、元數據、公共數據類型、委托等等。·多線程支持。·結構化異常處理。 1.6 名字空間與集合 前面討論了我們的第一個VB.NET程序。該程序中首先引人注意的是名字空間(namespace)。在.NET參考文檔中,你會發現每個類都歸屬于某個namespace。那么,namespace到底是什么?

一個namespace是類和組件的邏輯組合,其目的在于將.NET class按類別定義。微軟借用了C++ class packaging概念:namespace來描述這種組合。.NET Framework中的組件被稱為集合(assembly)。全部.NET代碼在數百個庫文件(DLL)中定義。Namespace把assembly中定義的類組織起來。一個namespace可以包括多個assembly,一個assembly也可以在多個namespace中定義。 namespace樹的根節點是System namespace。在.NET Library中,每個class都在一組相似的類別中定義。例如,System.Data namespace只包括數據相關類。同樣,System.Multithreading只包括多線程類。

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

1.7 VB.NET: 完全面向對象的編程語言抽象、封裝、多態、繼承是面向對象語言的四個基本屬性。VB6.0不支持繼承,而VB.NET則不然。所以,和C++一樣,VB.NET也是完全面向對象的編程語言。

Class 和 ModuleVB.NET用Class...End Class語句對創建class。每個VB.NET至少包括一個Module(模塊)。Module在Module…End Module語句對中實現。應用程序的主要模塊是Main方法,亦即應用程序入口點。

和VB6.0相似的地方是,都可以使用Function/Sub關鍵字定義方法。下面的例子顯示了如何創建class、添加方法,并從主程序調用方法: 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)是類變量的公共描述。Property…End Property語句用以創建property。屬性的Get/Set方法分別用于取得和設置屬性值。下面的例子中,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通過overload關鍵字支持方法重載。使用這個關鍵字,你可以定義同名但不同參數的方法。

類成員訪問域

除了原有的Private和Public,VB.NET引入了幾個新關鍵字。全部訪問域關鍵字列表如下:

關鍵字 作用域

Private 限于class內部

Public 可以從class外訪問

Friend 限于class所屬的應用程序內

Protected 只能被class和其派生類訪問

Protected Friend 能被class、應用程序和派生類訪問

繼承繼承是面向對象編程語言中最常用的技術。繼承讓你能夠重用類代碼和功能。

VB.NET支持繼承,而VB6.0則不支持。繼承的好處在于你能使用任何人編寫的類,從這些類派生自己的類,然后在自己的類中調用父類功能。在下面的例子中,Class B派生自Class A,我們將從Class B中調用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

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

共享的成員類的共享成員被類的所有實體共享。共享成員可能是屬性、方法或字段/值域。在你不想讓用戶全面控制自己的類時,共享成員相當有用。例如,你可以開發一個類庫,讓用戶通過共享成員使用其中的部分功能。

可以通過class本身引用共享成員,而無需通過類的實體。例如: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語言的一大弱點就是缺乏編寫自由線程(free-threaded)程序的能力。在.NET Framework中,所有語言共享CRL(Common Runtime Library,公共運行庫),也就是說,你可以用VB.NET、C#或其它.NET語言編寫同樣的程序。

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

System.Threading.Thread類提供線程對象,可以使用Thread類創建或破壞線程。

創建線程使用Thread類的實體創建一個新線程,然后用Thread.Start方法開始執行線程。線程構造器接受一個參數,該參數指明你要在線程中執行的procedure。在下例中,我想在oThread1(Thread類的一個實體)的第二線程中執行SecondThread過程:

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

然后,調用Thread.Start()開始線程:

oThread1.Start()

下面的代碼創建兩個第二線程:

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

破壞線程 調用Abort方法來破壞(中止)一個線程。在調用Abort之前,確保用IsAlive判斷線程處于活動狀態。

If oThread1.IsAlive Then

oThread1.Abort()

End If

暫停線程可以使用Sleep方法來暫停線程執行。Sleep方法接受一個以毫秒為單位的參數,指明線程應當暫停多長時間。

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

oThread2.Sleep(1000)你也可以使用Suspend和Resume方法來掛起和繼續線程執行。

設定線程優先級Thread類的Priority屬性用于設定線程優先級。該屬性可以設置為Normal,AboveNormal,BelowNormal,Highest和Lowest。如:

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

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

Public Enum ApartmentState

{

STA = 0,

MTA = 1,

Unknown = 2,

}

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

' 可能導致異常的代碼

Catch

' 當異常發生時處理異常的代碼

Finally

' 清理現場

End Try

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

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

數據類型(Data Type)的改變VB.NET中有些數據類型得到改進。下面是變化對照表。

數據類型 VB6.0 VB.NET

Integer 16 bit size 32 bit size

Long 32 bit size 64 bit size

Currency 用于存儲大浮點數 被decimal替代,支持更高精度

Variant 可以存儲任意類型數據 被Object類型替代,也可以存儲任意類型數據,但結果更好

Date Date類型被存儲為double 引入DateTime類型,用于存儲不同格式的日期

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

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

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

Dim name As String = "Mahesh"System.Console.Write(name) 聲明常量也可以照此辦理:Const DT_COUNT As Integer = 23 New關鍵字。在VB.NET中,New關鍵字用于創建對象。由于數據類型是對象,所以New關鍵字用以創建一個數據類型對象。

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

For i = 1 To 10Dim p As LongSystem.Console.WriteLine(i.ToString())NextSystem.Console.WriteLine(p.ToString()) 這段代碼在VB.NET中會得到一個編譯錯誤,因為p在For..Next語句塊之外不可訪問。在VB6.0中這段代碼可以通過。

改進了的類型安全

在VB6.0中,當你聲明一個對外部過程的引用時,可以指定任意類型的參數為As Any。Any關鍵字禁止了類型檢查,允許任意數據類型傳入和返回。

VB.NET不支持Any關鍵字。你必須指定每個參數和返回值的數據類型。數組VB.NET對數組作了明顯的改動。

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

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

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中指定固定長度的數組。

Dim ArrWeekDays(0 To 6) As Integer

這里的ArrWeekDays數組是固定長度的,不能用ReDim語句改變長度。VB.NET不支持固定長度數組,所以ReDim總是有效。

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

Variant對陣ObjectVB6.0中的Variant數據類型能存儲任意類型變量,VB.NET中Object具備相同能力。

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

操作符 常規語法 快捷方式加法 A = A+5 A +=5 減法 A = A – 5 A -+ 5固定長度字符串

在VB6.0中,可以在聲明字符串時指定其長度。VB.NET不支持固定長度字符串。

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

操作符 描述 BitAnd 按位AndBitOr 按位OrBitXor 按位XorBitNot 按位Not結構與自定義類型在VB6.0中,你使用Type…End Type語句塊創建結構或自定義類型。例如:

Type StdRec

StdId As Integer

StdName As String End Type

VB.NET引入新的語法:Structure。Type…End Type不再被支持。Structure…End Structure與C++用法相同。可以指定結構中每個元素的可訪問域,如Public、Protected、Friend、Protected Friend、Private等。例如:

Structure StdRec

Public StdId As Integer Public StdName As String

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

Return語句VB.NET的Return語句與C++相似。使用Return語句把控制權從過程返還給調用者。在VB6.0中,Return語句與GoSub語句一起使用。VB.NET不再支持GoSub語句。流程控制的改變下面是VB.NET對流程控制語句的修改:1. GoSub不再受到支持。2. Call、Function和Sub語句均可用于調用過程。3. On ... GoSub和On ... GoTo語句不再受支持。可以使用Select Case語句來替代。4. While ... Wend語句現在改為While…End While語句。不再支持Wend關鍵字。小結 Visual Basic .NET是.NET版本的Visual Basic,已經從根本發生了變化!通過本文你了解到VB6.0和VB.NET的區別是很大的,可以說根本就是兩種不同的語言,因為它們的內核發生了變化,VB6.0是基于COM而vb.net是基于.net框架的,因為這個變化,所以在構造類時也發生了根本性的變化。

vb2008 enum是什么意思

VB.NET有很多值得學習的地方,這里我們主要介紹VB.NET常量,包括介紹VB.NET枚舉等方面。

在程序運行的過程中始終固定不變的量稱為常量。由于在程序設計和開發時經常會反復地運用一些常數,而且它們代表的含義有時候非常難記,所以每次都需 要去核對,如果定義了常量將使之簡單化,則可提高代碼的可讀性及可維護性。

注意,不可以任意地修改和賦予新的值。

VB.NET常量的來源有兩種,由用戶利用Const語句自定義,或者是系統預先定義的,可以通過菜單中“視圖”一“其他窗口”一“對象瀏覽器”命 令或者是同時按Ctrl+Alt+J組合鍵就可以打開VB.NET和VBA對象庫中的常數列表。這些常數可以與應用程序的對象、方法和屬性一起使用,而且 每一個ActiveX控件的對象庫也定義了單獨的常量。

聲明VB.NET常量的語法格式如下:

[Public | Private | Friend l Protected | Pr0 tected Friend | Const常量名[As類型]=表達式

◆VB.NET常量名:任何有效的符號名。

◆表達式:由字符或數值常數以及運算符組成,也可以是結果為數字或者是字符串的表達式。但是表達式中不能夠使用函數調用。注意,如果程序中打開了 Option strict,則語句需要顯式聲明常量。

◆Const語句可以聲明表示數量、字符串、時間或者是日期的常量。例如:

Const pi=3.14159265358979323846

Private Const sum as Inteqer=1000

VB.NET枚舉類型作用域的聲明仍然使用Public、Private、Protected和Friend。例如:

Private Enum months

Public Enum months

Protected Enum months Friend Enum months

Protected Friend Enum months

在默認狀態下,VB.NET枚舉中第一個常量便初始化為0,其后面的依次比以前的常量大1;也可以通過賦值語句對常量進行 賦值,此值可以為任何值,包括負數。例如:

Public Enum halfyear

January

February=0

Marth

April

May

June

Invalid=-1

End Enum

上述代碼中Invalid被指定為-1,February被指定為0,但由于January是枚舉的第一個常量,所以其初始化值為0。Marth的 值便應該為1(比February值大1),接下來的依次類推。另外,默認VB.NET枚舉的值為Integer,但也可以把其顯式聲明為所需要的類型 (除了浮點數類型)在引用枚舉成員的時候,一般必須使用枚舉名來限定,但是利用VB.NET中提供的Import語句可以避免使用完整的限定名,引入 了:Import語句以后就必須避免出現含義不清的引用。注意,多個枚舉中可能含有相同的常量。

VB.net每種數據類型特點?

VB.NET數據類型VB.NET中有12種不同的數據類型,可以分成三類:數值類型、文本類型和混合類型。數值類型是VB.NET數據類型的主要類型,共7種。數值類型的數據類型見下表。 數據類型表示方式取 值 范 圍說 明整型Integer–2147483648~2147483647用于表示簡單整數字節型Byte0~255用于簡單算術運算。由于這個類型的變量可以在一個字節中存儲,所以運算速度最快短整型Short–32768~32767是整型的一種形式,相對表示范圍較小長整型Long–9223372036854775808~9223372036854775807是整型的一種形式,相對表示范圍較大單精

度型Single–3.402823E38~–1.401298E-45(對于負數)和1.401298E-45~3.402823E38(對于正數)用于存放單精度浮點數雙精

度型Double–1.79869313486232E308~–4.94065645841247E-324(對于負數)和4.94065645841247E-324~1.79869313486232E308(對于正數)用于存放雙精度浮點數小數Decimal當小數位為0的時候,為–79228162514264337593543950335~

79228162514264337593543950335;當小數位為28的時候,為–7.9228162514264337593543950335~

7.9228162514264337593543950335常用于存儲貨幣值 數值類型的數據類型 用于存放文本的數據類型有兩個。文本類型的VB.NET數據類型見下表。 數 據 類 型表 示 方 式說 明字符串型String用于存放任何形式的字符串,包括一個字符或者多行字符字符型Char用于存放一個字符,它以0~65535之間數字的形式存儲文本類型的數據類型 其中需要說明的是: (1) 對于String類型,可以存放任何形式的字符串,它可以是純粹的文本,也可以是文本和數字的組合或者是數字、日期等。例如"This is a book. "和"12345"都是字符串。對于字符串類型的數據,可以進行相關的字符串操作,例如連接、截斷等。 (2) 對于Char類型,可以存儲的只是一個字符,注意,這個字符的存儲編碼必需是一個數字。在計算機系統中,可以顯示很多符號(不僅僅是英文字母),為了能夠正確地顯示,國際上有通用的標準(例如Unicode編碼),為每個字符設定了一個標準的數值來表示這個字符。其余的數據類型還有:Date數據類型、布爾數據類型和Object數據類型,其說明見下表。 數 據 類 型表 示 方 式說 明日期型Date必須用mm/dd/yyyy的格式表示,也可以存儲時間(可以存儲00:00:00~23:59:59之間的任何時間)布爾型Boolean取值為True和False對象型Object 其他數據類型 其中需要說明的是:在VB.NET中,對于Boolean類型的數據,當需要把布爾類型的值轉換為數值類型的時候,會把True當成1來處理,把False當作0來處理。當需要把VB.NET數值類型的值轉換為布爾類型的時候,會把0轉換為False,而把其他的非0數值轉換為True。

VB6.0與VB.NET有什么區別?

VB.NET和VB6.0有什么區別

Visual Basic .NET是Microsoft Visual Studio .NET套件中主要組成部分之一。.NET版本的Visual Basic增加了更多特性,而且演化為完全面向對象(就像C++)的編程語言。本文將介紹VB.NET的新特性,并比較VB6.0/VB.NET之間的區別,闡述如何利用VB.NET編寫簡單的應用程序。

1.1 什么是 VB.NET? Microsoft推出全新的編程和操作系統Framework——.NET,支持多種語言利用公共.NET庫開發應用程序,這些應用程序在.NET Framework上運行。使用Visual Basic在.NET Framework上編程,這就是VB.NET。

首先,讓我演示在VB.NET中寫最簡單的控制臺程序:Hello World。

1.2 Hello, World!“Hello World!”是初學者學習Windows編程的代表性程序。我們的第一個程序就叫做“Hello VB.NET World!”。該程序在控制臺輸出一句話:“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等任意文本編輯器中撰寫上述代碼,然后保存為HelloWorld.vb。 代碼編寫完成之后,要么在命令行、要么在VS.NET IDE中編譯它。在Microsoft .NET Framework SDK中已經包括VB.NET編譯器vbc.exe[][1],從IDE或是命令行都可以調用。要從命令行編譯HelloWorld.vb,請在命令行窗口輸入

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

編譯結束后,HelloWorld.exe被創建到當前目錄下。在資源管理其中雙擊圖標或在命令行執行,程序正確地運行了。祝賀你進入VB.NET開發者的行列。

Imports 語句

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

Imports System甚至可以明確地調用namespace而無需用Import導入。下面的例子展示了不用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類,該類用于讀寫控制臺(命令行窗口)。然后你定義了一個module:Module Module1

…End Module所有的VB程序都包括一個Main()方法,即應用程序入口點。在例子程序中,我們調用Console.WriteLine()向控制臺寫入“Hello VB.NET World!”:

Sub Main()

Console.WriteLine(“Hello VB.NET World!”) End SubWriteLine()方法歸屬于Console類,它負責向控制臺寫一個帶有行結束符的字符串。如前所述,Console類定義于System namespace,你通過直接引用來控制類成員。

Console類負責讀寫系統控制臺。讀控制臺輸入用Read和ReadLine方法,向控制臺輸出用WriteLine方法。

表1.1 Console類定義的方法

方法 用途 例子

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

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

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

WriteLine 寫一行,并帶上行結束符

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

1.5 VB.NET有什么新特點? VB.NET比 VB6.0更加穩定,而且完全面向對象。也許你還記得,VB6.0不支持繼承、重載和接口,所以不是真正面向對象的。而VB.NET則支持這些面向對象特性。VB6.0有兩個薄弱環節——多線程和異常處理。在VB.NET中,開發多線程應用和使用C++/C#別無二致,結構化異常處理也得到支持。稍后我們會詳細解釋這些特性。

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

·面向對象的編程語言。支持繼承、重載、接口、共享成員和構造器。·支持所有的CLS特性,如存取控制.NET類、與其它.NET語言交互、元數據、公共數據類型、委托等等。·多線程支持。·結構化異常處理。 1.6 名字空間與集合 前面討論了我們的第一個VB.NET程序。該程序中首先引人注意的是名字空間(namespace)。在.NET參考文檔中,你會發現每個類都歸屬于某個namespace。那么,namespace到底是什么?

一個namespace是類和組件的邏輯組合,其目的在于將.NET class按類別定義。微軟借用了C++ class packaging概念:namespace來描述這種組合。.NET Framework中的組件被稱為集合(assembly)。全部.NET代碼在數百個庫文件(DLL)中定義。Namespace把assembly中定義的類組織起來。一個namespace可以包括多個assembly,一個assembly也可以在多個namespace中定義。 namespace樹的根節點是System namespace。在.NET Library中,每個class都在一組相似的類別中定義。例如,System.Data namespace只包括數據相關類。同樣,System.Multithreading只包括多線程類。

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

1.7 VB.NET: 完全面向對象的編程語言抽象、封裝、多態、繼承是面向對象語言的四個基本屬性。VB6.0不支持繼承,而VB.NET則不然。所以,和C++一樣,VB.NET也是完全面向對象的編程語言。

Class 和 ModuleVB.NET用Class...End Class語句對創建class。每個VB.NET至少包括一個Module(模塊)。Module在Module…End Module語句對中實現。應用程序的主要模塊是Main方法,亦即應用程序入口點。

和VB6.0相似的地方是,都可以使用Function/Sub關鍵字定義方法。下面的例子顯示了如何創建class、添加方法,并從主程序調用方法: 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)是類變量的公共描述。Property…End Property語句用以創建property。屬性的Get/Set方法分別用于取得和設置屬性值。下面的例子中,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通過overload關鍵字支持方法重載。使用這個關鍵字,你可以定義同名但不同參數的方法。

類成員訪問域

除了原有的Private和Public,VB.NET引入了幾個新關鍵字。全部訪問域關鍵字列表如下:

關鍵字 作用域

Private 限于class內部

Public 可以從class外訪問

Friend 限于class所屬的應用程序內

Protected 只能被class和其派生類訪問

Protected Friend 能被class、應用程序和派生類訪問

繼承繼承是面向對象編程語言中最常用的技術。繼承讓你能夠重用類代碼和功能。

VB.NET支持繼承,而VB6.0則不支持。繼承的好處在于你能使用任何人編寫的類,從這些類派生自己的類,然后在自己的類中調用父類功能。在下面的例子中,Class B派生自Class A,我們將從Class B中調用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

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

共享的成員類的共享成員被類的所有實體共享。共享成員可能是屬性、方法或字段/值域。在你不想讓用戶全面控制自己的類時,共享成員相當有用。例如,你可以開發一個類庫,讓用戶通過共享成員使用其中的部分功能。

可以通過class本身引用共享成員,而無需通過類的實體。例如: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語言的一大弱點就是缺乏編寫自由線程(free-threaded)程序的能力。在.NET Framework中,所有語言共享CRL(Common Runtime Library,公共運行庫),也就是說,你可以用VB.NET、C#或其它.NET語言編寫同樣的程序。

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

System.Threading.Thread類提供線程對象,可以使用Thread類創建或破壞線程。

創建線程使用Thread類的實體創建一個新線程,然后用Thread.Start方法開始執行線程。線程構造器接受一個參數,該參數指明你要在線程中執行的procedure。在下例中,我想在oThread1(Thread類的一個實體)的第二線程中執行SecondThread過程:

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

然后,調用Thread.Start()開始線程:

oThread1.Start()

下面的代碼創建兩個第二線程:

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

破壞線程 調用Abort方法來破壞(中止)一個線程。在調用Abort之前,確保用IsAlive判斷線程處于活動狀態。

If oThread1.IsAlive Then

oThread1.Abort()

End If

暫停線程可以使用Sleep方法來暫停線程執行。Sleep方法接受一個以毫秒為單位的參數,指明線程應當暫停多長時間。

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

oThread2.Sleep(1000)你也可以使用Suspend和Resume方法來掛起和繼續線程執行。

設定線程優先級Thread類的Priority屬性用于設定線程優先級。該屬性可以設置為Normal,AboveNormal,BelowNormal,Highest和Lowest。如:

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

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

Public Enum ApartmentState

{

STA = 0,

MTA = 1,

Unknown = 2,

}

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

' 可能導致異常的代碼

Catch

' 當異常發生時處理異常的代碼

Finally

' 清理現場

End Try

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

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

數據類型(Data Type)的改變VB.NET中有些數據類型得到改進。下面是變化對照表。

數據類型 VB6.0 VB.NET

Integer 16 bit size 32 bit size

Long 32 bit size 64 bit size

Currency 用于存儲大浮點數 被decimal替代,支持更高精度

Variant 可以存儲任意類型數據 被Object類型替代,也可以存儲任意類型數據,但結果更好

Date Date類型被存儲為double 引入DateTime類型,用于存儲不同格式的日期

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

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

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

Dim name As String = "Mahesh"System.Console.Write(name) 聲明常量也可以照此辦理:Const DT_COUNT As Integer = 23 New關鍵字。在VB.NET中,New關鍵字用于創建對象。由于數據類型是對象,所以New關鍵字用以創建一個數據類型對象。

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

For i = 1 To 10Dim p As LongSystem.Console.WriteLine(i.ToString())NextSystem.Console.WriteLine(p.ToString()) 這段代碼在VB.NET中會得到一個編譯錯誤,因為p在For..Next語句塊之外不可訪問。在VB6.0中這段代碼可以通過。

改進了的類型安全

在VB6.0中,當你聲明一個對外部過程的引用時,可以指定任意類型的參數為As Any。Any關鍵字禁止了類型檢查,允許任意數據類型傳入和返回。

VB.NET不支持Any關鍵字。你必須指定每個參數和返回值的數據類型。數組VB.NET對數組作了明顯的改動。

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

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

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中指定固定長度的數組。

Dim ArrWeekDays(0 To 6) As Integer

這里的ArrWeekDays數組是固定長度的,不能用ReDim語句改變長度。VB.NET不支持固定長度數組,所以ReDim總是有效。

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

Variant對陣ObjectVB6.0中的Variant數據類型能存儲任意類型變量,VB.NET中Object具備相同能力。

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

操作符 常規語法 快捷方式加法 A = A+5 A +=5 減法 A = A – 5 A -+ 5固定長度字符串

在VB6.0中,可以在聲明字符串時指定其長度。VB.NET不支持固定長度字符串。

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

操作符 描述 BitAnd 按位AndBitOr 按位OrBitXor 按位XorBitNot 按位Not結構與自定義類型在VB6.0中,你使用Type…End Type語句塊創建結構或自定義類型。例如:

Type StdRec

StdId As Integer

StdName As String End Type

VB.NET引入新的語法:Structure。Type…End Type不再被支持。Structure…End Structure與C++用法相同。可以指定結構中每個元素的可訪問域,如Public、Protected、Friend、Protected Friend、Private等。例如:

Structure StdRec

Public StdId As Integer Public StdName As String

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

Return語句VB.NET的Return語句與C++相似。使用Return語句把控制權從過程返還給調用者。在VB6.0中,Return語句與GoSub語句一起使用。VB.NET不再支持GoSub語句。流程控制的改變下面是VB.NET對流程控制語句的修改:1. GoSub不再受到支持。2. Call、Function和Sub語句均可用于調用過程。3. On ... GoSub和On ... GoTo語句不再受支持。可以使用Select Case語句來替代。4. While ... Wend語句現在改為While…End While語句。不再支持Wend關鍵字。小結 Visual Basic .NET是.NET版本的Visual Basic,已經從根本發生了變化!通過本文你了解到VB6.0和VB.NET的區別是很大的,可以說根本就是兩種不同的語言,因為它們的內核發生了變化,VB6.0是基于COM而vb.net是基于.net框架的,因為這個變化,所以在構造類時也發生了根本性的變化。

新聞名稱:vb和net常量對照表 vb常量有哪些
當前地址:http://www.kartarina.com/article36/docspsg.html

成都網站建設公司_創新互聯,為您提供企業網站制作App設計網站收錄ChatGPTApp開發網站營銷

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設
欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线
91精品蜜臀在线一区尤物| 国产伦精品一区二区三区视频青涩| 欧美大片一区二区三区| 欧美三级在线播放| 色94色欧美sute亚洲13| 91农村精品一区二区在线| voyeur盗摄精品| 91日韩精品一区| 欧美日韩国产系列| 91精品麻豆日日躁夜夜躁| 91麻豆精品国产无毒不卡在线观看| 欧美日韩综合在线| 337p亚洲精品色噜噜| 日韩欧美不卡在线观看视频| 欧美一区二区久久久| 日韩精品在线网站| 国产精品免费视频观看| 综合久久国产九一剧情麻豆| 一区二区三区欧美日| 日本成人中文字幕在线视频| 国产真实乱对白精彩久久| jvid福利写真一区二区三区| 色婷婷久久久亚洲一区二区三区 | 亚洲欧美一区二区久久| 一区二区在线免费观看| 亚瑟在线精品视频| 九九国产精品视频| www.激情成人| 欧美一级精品在线| 国产精品欧美久久久久无广告| 一区二区三区自拍| 精品无码三级在线观看视频| 成人国产精品免费观看| 欧美妇女性影城| 中文字幕欧美激情一区| 一区二区三区国产精华| 激情五月激情综合网| 97精品国产露脸对白| 欧美男人的天堂一二区| 国产蜜臀av在线一区二区三区| 亚洲欧美日韩在线| 激情六月婷婷久久| 成人动漫中文字幕| 日韩美一区二区三区| 亚洲麻豆国产自偷在线| 精品一区二区三区免费视频| 99国产精品国产精品久久| 日韩一区二区三区电影| 亚洲毛片av在线| 成人中文字幕合集| 欧美大片拔萝卜| 午夜久久久久久久久久一区二区| 国产成人免费网站| 精品裸体舞一区二区三区| 亚洲国产精品自拍| 99久久99久久综合| 国产日产精品1区| 青青草伊人久久| 欧美日韩电影一区| 一区二区日韩av| 91免费版pro下载短视频| 久久久久久久精| 裸体在线国模精品偷拍| 678五月天丁香亚洲综合网| 亚洲色图一区二区三区| 国产iv一区二区三区| 久久先锋影音av鲁色资源网| 视频在线观看91| 欧美日韩黄色一区二区| 亚洲黄色在线视频| 99国产精品99久久久久久| 国产精品午夜春色av| 国产精品亚洲第一区在线暖暖韩国| 日韩午夜激情av| 欧美aaaaa成人免费观看视频| 精品少妇一区二区三区日产乱码| 亚洲丰满少妇videoshd| 日本道免费精品一区二区三区| 亚洲视频一区在线| 色综合久久中文综合久久牛| 亚洲欧美怡红院| 色偷偷88欧美精品久久久| 一区二区日韩av| 欧美日韩国产精选| 蜜臀久久99精品久久久久宅男| 91精品久久久久久久99蜜桃| 蜜臀av在线播放一区二区三区| 欧美一区二区三区人| 青青草国产成人av片免费| 日韩一区二区电影| 国产精品自拍三区| 中文字幕一区二区三区在线观看| 波多野结衣一区二区三区 | 欧美性猛交一区二区三区精品| 亚洲精品日韩一| 欧美理论电影在线| 激情综合五月天| 国产精品九色蝌蚪自拍| 91蜜桃在线免费视频| 日本色综合中文字幕| 国产清纯在线一区二区www| 99久久伊人久久99| 视频一区二区中文字幕| 欧美精品一区二区蜜臀亚洲| 风间由美一区二区av101 | 蜜臀国产一区二区三区在线播放| 久久免费视频一区| 色综合视频在线观看| 日韩av二区在线播放| 国产日韩欧美不卡| 欧美裸体一区二区三区| 国产69精品久久久久毛片| 亚洲综合在线第一页| 26uuu亚洲| 欧美视频一区在线| 国产成人在线网站| 日韩二区三区在线观看| 国产精品人成在线观看免费| 在线成人av网站| av成人老司机| 狠狠色丁香婷婷综合| 樱花影视一区二区| 国产精品美女久久福利网站| 欧美一区二区三区四区高清| www.欧美日韩| 激情综合网av| 午夜伦理一区二区| 亚洲视频一区二区免费在线观看| 日韩欧美国产精品一区| 在线视频国内一区二区| 国产精品77777| 久久精品国产亚洲一区二区三区| 亚洲人精品一区| 国产欧美一区二区三区在线看蜜臀| 欧美一区二区三区的| 在线一区二区三区做爰视频网站| 国产自产2019最新不卡| 蜜臀久久久久久久| 午夜一区二区三区在线观看| 久久亚洲影视婷婷| 亚洲日本在线a| 欧美成人伊人久久综合网| 欧美性猛交一区二区三区精品| 国产91对白在线观看九色| 精品一区二区三区视频 | 欧美综合视频在线观看| 岛国av在线一区| 国产福利91精品一区| 久久66热偷产精品| 精久久久久久久久久久| 久久国产精品色婷婷| 蜜臀精品一区二区三区在线观看 | 久久国产精品区| 另类小说综合欧美亚洲| 男女性色大片免费观看一区二区| 同产精品九九九| 日韩av二区在线播放| 免费观看久久久4p| 国产最新精品精品你懂的| 国内国产精品久久| 国产成人免费视频网站| 懂色av一区二区夜夜嗨| av成人老司机| 在线视频欧美区| 欧美精品xxxxbbbb| 欧美变态tickling挠脚心| 久久欧美中文字幕| 国产精品另类一区| 亚洲国产日韩精品| 美脚の诱脚舐め脚责91| 国产精一区二区三区| 成人激情开心网| 欧美性欧美巨大黑白大战| 3d动漫精品啪啪一区二区竹菊 | 国产成人精品一区二| 国产999精品久久久久久绿帽| 成人小视频在线| 色悠久久久久综合欧美99| 欧美日韩成人综合| 久久久久久久电影| 一区二区三区日韩欧美精品| 日日夜夜精品免费视频| 国产一区二区视频在线播放| 色综合中文字幕国产| 欧美色大人视频| 久久久国产一区二区三区四区小说| 国产精品你懂的在线欣赏| 亚洲成人第一页| 国产91丝袜在线播放0| 色域天天综合网| 日韩欧美久久久| 亚洲欧美日韩国产另类专区| 石原莉奈一区二区三区在线观看| 国产精品一区二区不卡| 色偷偷久久一区二区三区| 久久蜜臀精品av| 天堂午夜影视日韩欧美一区二区| 成人一区二区三区中文字幕| 91.com在线观看| 亚洲永久精品国产|