1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Tổng quan VB.Net pdf

11 684 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề VB.NET
Năm xuất bản 2006
Định dạng
Số trang 11
Dung lượng 123,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

không còn hỗ trợ Currentcy  Thay bằng Double hay Variant  Thay bằng object Fixed lenght String EQU IMP Doevents  System.Windows.Forms.Application.Doevents Empty IsMissing Mid … 2.Các

Trang 1

Tổng kết( Tóm lược ) về VB.NET

Cập nhật ngày 08/07/2006 ( xin đọc từ đầu )

I Đặc trưng NET

1 Ưu điểm :

- Phát triển ứng dụng nhanh, dễ dàng bảo trì & phát triển

- Chạy ổn định ít bị BUG, CRASH

- Thích hợp cho phát triển wed và các ứng dụng chủ khách nhiều tầng cũng như CSDL

- Dễ dang cài đặt không còn bị DLL Hell

2.Nhược điểm

- Đòi cấu hình mạnh ( CPU : > 1000MHZ, RAM >= 256 MB )

- Dễ bị dịch ngược và crack vì tất cả đều là mã mở do phải dich sang ngôn ngữ trung gian IL

Công cụ:

- Dịch ra IL

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\ILDASM.exe

- Dịch từ IL về c# & VB.NET

http://www.saurik.com/net/exemplar/

http://www.aisto.com/roeder/dotnet

- Dịch trực tiếp ra mã máy native code :

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ngen.exe

3 Các thuật ngữ mới trong NET

IL : Intermediate Language : Ngôn ngữ trung gian tựa mã máy được sinh ra trong quá trìng chạy

.NET EXE FILE

Assembly : Được hiểu như là một thành phần COMPONENT trên VB, NET được cấu thành từ gần 5000 ASSEMBLY

MetaData : Được hiểu như là các mẫu dữ liệu chứa thông tin về các dữ liệu của chương trình ví dụ như

version, format, type… ( DATA about DATA ),  giao diện địng nghĩa dữ liệu

CRL : Common Language Runtime : Là hệ thống máy ảo tựa JAVA để dịch source ra IL Điểm mạnh của .NET là hỗ trợ đa ngôn ngữ do dùng một giao diện chung cho một kiểu dữ liệu như : SYSTEM.OBJECT & SYSTEM.INT32, ngoài ra CLR còn dùng các metadata để chuyển đổi, kiêm tra và thi hành các code

JIT : Just in time Complier, trình thông dịch ra mã máy từ IL code lúc chạy, chỉ có đoạn mã cần chạy là được dịch

Thông tin :

Để tương thích với các ngôn ngữ khác chỉ lên dùng các kiểu dữ liệu chuẩn của CLR như Integer , Long các kiểu như Ulong ,Uinteger xuất hiện từ VB2K5 không phải là kiểu chuẩn do vậy sẽ gặp khó khăn Khi chuyển đổi sang ngôn ngữ khác cũng như tương tác với API

Quá trình thực thị NET:

.NET Executable File ( MetaData + IL Code )

Trang 2

Hệ thống máy ảo CLR

Class Loaders

JIT

§

II NET cơ bản

1.Các kiểu dữ liệu ,từ khoá không còn hỗ trợ

Currentcy  Thay bằng Double hay

Variant  Thay bằng object

Fixed lenght String

EQU

IMP

Doevents  System.Windows.Forms.Application.Doevents

Empty

IsMissing

Mid

2.Các kiểu dữ liệu mới( hay có thay đổi) VB 6.0

Thông tin : Kiểu Char có kích cỡ 1 byte kí hiệu = “c” nhanh gọn hơn nhiều so với string

String

Thông Tin : Kiểu chuỗi trong NET là kiểu con trỏ , không hỗ trợ chuỗi có độ dài cố định, và được tương tác như một mảng ký tự, có thể truy cập dễ dàng thông qua chỉ số như PASCAL

( các số không dấu thêm U đằng trước- unsigned )

NulAble 

Thông Tin : Kiểu dữ liệu cho phếp NULL ( không chứa giá trị nào ), áp dụng trong nhiều trường hợp :

- Kiểu boolean chỉ có hai giá trị T & F nhưng chưa đủ cho nhiều trường hợp ví dụ checkbox có thể T hay F và Disable

-Các khai báo biến optional cần phải gán trước 1 giá trị ngầm định, nhưng trong trường hợp cả giá trị ngầm định cũng bị sử dụng thì phải dùng NullAble

Eg:

Dim X As Nullable(Of Boolean) X.HasValue ( = TRUE  có giá trị , = FALSE : NULL) Đọc giá trị qua : X.Value

*!!!! :

Trang 3

Các kiểu dữ liệu cơ bản như long ,Int,byte,Short khi khai báo có thể không cần dùng NEW do vậy

Các lệnh sau tương đương :

Dim X As Long Dim X As New Long Dim X As Long = New Long

3 Các từ khoá,cấu trúc , lệnh mới hay có thay đổi VB 6.0

Thông Tin :

STRUCTURE có cấu trúc gần giống CLASS chỉ không kế thừa được Trong có thể gồm cả EVENT, Property, SUB, function.Do vậy structure trong NET rất linh động

Eg:

Public Structure POINTAPI Public X As Integer

Public Y As Integer

Event DrawAction()

End Structure

Tương tự OR nhưng nếu 1 toán hạng trả về kết quả đã quyết định toàn bộ biểu thức thì không cần tính tiếp các toán hạng sau nữa

Tương tự AND nhưng nếu 1 toán hạng trả về kết quả đã quyết định toàn bộ biểu thức thì không cần tính tiếp nữa

Optional

Các tham số khai báo optional phải luôn được gán giá trị khởi tạo Phép chia lấy phần dư ( MOD) với số thực

math.IEEERemainder( 11.2,4.2)

isnot  Is ( Not )

+ các hàm chuyển đôi kiểu :

Directcast : Dùng đỏi 2 đối tượng cùng kiểu, 2 đối tượng có thể đổi cho nhau như string  long nhưng khác kiểu sẽ bị báo lỗi

Ctype : Đổi hai đối tượng khác loại nhưng có thể đổi được , không đổi được lỗi

Ví dụ : CType(“123”, string ) Báo lỗi : CType (“123SSSA”,long)

Thông tin : Thực chất Ctype chuyển giá trị cần đổi sang một kiểu trung gian ( string) rồi convert về kiểu đich

Trycast : Tương tự DirectCast nhưng trả về nothing nếu có lỗi

+ gettype : Trả về kiểu của đối tượng

+ TypeOf + Is

+ Mảng ( array ) và chuỗi ( String ) được tham chiếu chứ không phải tham trị

Khai báo mảng rỗng :

Dim X(-1) as long Chỉ số đầu của mảng luôn bằng 0

+ Các cấu trúc lặp mới :

Trang 4

While < Condition>

End While VB.NET hỗ trợ các lệnh để tiếp tục hay ngắt lặp không cần dùng GOTO như VB 6 Continue : Tiếp tục vòng lặp gần nhất

Exit : Thoát lặp gần nhất

+ Cấu trúc bẫy lỗi :

Try Catch ex As Exception

End Try Thông tin : các thủ tục có dùng cấu trúc bẫy lỗi chạy chậm hơn 40% so với các thủ tục không

có bẫy lỗi,  hạn chế dùng trong timer và nên trả về mã lỗi hay kiểm tra điều kiện lỗi = If Then Không lên dùng lẫn cả cấu trúc bẫy lỗi cũ của VB 6

Ví dụ:

Hàm Function kiemtra( ByVal So1 As Long , ByVal so2 As Long ) As Long

Try

Catch ex As Exception MsgBox( " chia cho 0" )

End Function

sẽ chạy chậm hơn nhiều so với hàm dưới do cứ sau 1 lệnh , vb lại phải thêm 1 lệnh kiểm tra lỗi

Function kiemtra2( ByVal So1 As Long , ByVal so2 As Long ) As Long

If (So1 = 0) Or (so2 = 0) Then

MsgBox( "chia cho 0" ) End If

Return So1 / so2 End Function

+ Các cấu trúc Giải phóng bộ nhớ

Using x As New AnyObject

End Using

 Có thể dùng kép :

Eg :

Using sr As New StreamReader(inFile), sw As New &_ StreamWriter(outFile),

& _ sw.Write(sr.ReadToEnd().ToLower()) End Using

Thông tin:

Khi dùng Using & End Using , đối tượng sẽ được giải phóng tức thì chứ không phải đợi GC

+ Hỗ trợ DOCK & ANCHo

Hai thuộc tính mới trong control cho phép các điều khiển tự co dãn hay giữ nguyên vị so với các container của nó  tiết kiệm công sức

4 Các cú pháp mới

+ Khai báo biến thuận tiện hơn

Eg: Dim X,y,z as long  Dim X as long : Dim y as long …

+ Biến được khởi gán :

Eg:

Dim X as long =1 Dim Y(3) as long = {1,2,3}

+

Trang 5

X +=1  X = X+1

X - =1  X = X -1 X*= 1  X = X * 1

>>  Dịch bít phải có dấu

<<  Dịch bít trái có dấu

5.Các ký hiệu đại diện cho kiểu dữ liệu :

Trong khai báo biến

Dim X + “ Ký tự đại diện “

Eg : Dim X%  Dim X as integer

&  Long

!  Single

Trong sử dụng hằng số :

Eg :

Dim X# = 123.2D

Eg :

UL : unsigned long

II.Hỗ trợ ngôn ngữ & trình thông dịch CRL

1 Hỗ trợ chèn các chú thích dùng XML

Trước thủ tục cần chú thích : nhấn ’’’ < Enter> Vb sẽ sinh ra như sau

''' <summary>

'''

''' </summary>

''' <param name="Param1"></param>

''' <returns></returns>

''' <remarks></remarks

2 Hỗ trợ sinh mã tự động

Trong của sổ code gõ ? và nhấn TAB để sinh ra 1 số đoạn mã có cấu trúc hay dùng

Eg : Gõ “If” + “?” <TAB>

VB.NET IDE cho phép tạo thêm các snipset để sinh ra các đoạn mã hay dùng theo mẫu cho phép Tương đương VB code assistant

Tăng tốc độ soạn thảo

Phím nóng : Ctrl + B, Ctrl + K

3.Các chỉ thị biên dịch (Attributes)

Là mớ thông tin để cho CRL biết những việc cần hành xử với một hay vài modul, classs lúc runtime Các trình biên dịch trở về trước thường có riêng các chỉ thị biên dịch để tối ưu mã lệnh mà không ai giống ai, từ vb.net 2003, microsoft đã bó các chỉ thị biên dịch này vào các CLASS để dễ dàng mở rộng.Các chỉ thị biên dịch bắt đầu “ < >”

Trang 6

Ngoài tác dụng là các chỉ thị biên dịch ,Microsoft đã mở rộng Attributes thành các lớp để mô tả code, tài liệu… Các atrributives này không nằm trong EXEC CODE của chương trình mà ẩn sau các METADATA của các ASSEMBLLY

Muốn dùng các chỉ thị biên dịch cần imports class

Imports System.Runtime.CompilerServices

imports System.ComponentModel

Ví dụ : Với các thủ tục hay hàm chỉ có một đến vài lệnh có thể tối ưu bằng cách bật chỉ thị inline mode cho phép CRL chèn code trực tiếp chứ không cần phát sinh lời gọi hàm CALL nhăm tăng tốc độ thi hành, thông thường khi gọi hàm :

Function Eval( ByVal n1 As Integer , ByVal n2 As Integer ) As Integer

End Function

Ví dụ:

X = eval(22,10) Net sẽ chèn thẳng : X =22 \10 Nếu tắt inline đi chèn thêm dòng dưới vào trước sub, hay fun

<MethodImpl(MethodImplOptions.NoInlining)> _

Function Eval( ByVal n1 As Integer , ByVal n2 As Integer ) As Integer

End Function

‘ Chỉ thị <Flags> làm NET xem Enum dưới như là một BitCode

<Flags()> Enum ValidDataEntry

IntegerNumber = 1

FloatingNumber = 2

CharString = 4

DateTime = 8

End Enum

4.Các công cụ hỗ trợ đi kèm

IDE ( Intergrated Development eviroment ) môi trường tích hợp phát triển của NET cung cấp khá nhiều công cụ hỗ trợ :

Xem IL code được sinh C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe Dịch thẳng ra native code

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ngen.exe Xem thông tin PE NET EXE file

C:\Program Files\Microsoft Visual Studio 8\VC\bin\dumpbin.exe

Để tiện hơn khi sử dụng , trong IDE VB.NET vào TOOLS \ EXTENAL TOOLS… chọn ADD NEW Trong command line : paste đường dẫn, trong agrument : chọn $(TargetDir) , sau OK

5.Gỡ rối ( debug & trace ) ( ??? )

Not available yet

III VB.NET nâng cao

A Các đặc trưng hướng đối tượng & ngôn ngữ nâng cao mới

1 Overloading

Cho phép các thủ tục hàm được dùng cùng 1 tên ( khác tham số),do vậy các thủ tục có thể Mềm dẻo hơn

2 Hỗ trợ default property ( bắt buộc phải có tham số)

Default Public Property Addresses( ByVal index As Integer ) As String

3 Các Constructor cho phép Overload đồng thời hỗ trợ nhiều tham số

Trang 7

4 Share Function & Sub

Các thủ tục hay hàm trong class có thể được đăng ký SHARE để các lớp khác có thể truy xuất

Thông thường để dùng 1 public sub trong class ta khai báo :

Dim X as anyClass X.AnySub

Nếu anySub được khai báo là SHARE ta có thể gọi anySub mà không cần tạo 1 lớp nào

Eg : AnyClass.AnySub

Thông tin :

- Các property được khai báo public & share chạy chậm hơn các private 30%

- Các share Function & sub không thể truy nhập vào các biến public của class

- Thục tế các module chính là các lớp mà các hàm & thủ tục được khai báo là shared + bỏ thừa kế

5.Shared propery

Các Property được khai báo là Shared sẽ được chép lên vùng PUBLIC do đó có thể bị thay đổi bởi các instance của các class , các instance của 1 class có thể dùng các biến share để trao đổi thông tin cho nhau

6 Parital Class ( class bị phân lớp)

Từ khoá này chỉ có từ Vb 2k5 cho phép 1 class có thể được chứa trong 2 hay nhiều file VB

Thông thường VB tự sinh thêm 1 parital class đối với các đối tượng FORM hay control để chứa các lệnh khởi tạo tự sinh để đỡ làm rối mắt programer ( các file nay thường bị ẩn )

7.Operator over loading ( chỉ có từ VB2k5 )

Các từ khoá +,- And… có thể được overloading ( đối với các structure, Class)

8 Hỗ trợ Delegate

Delegate còn gọi là kiểu thủ tục chính là cách gọi 1 thủ tục mà địa chỉ được lưu vào một biến con trỏ chứ không phải tên thủ tục do vậy trong một số trường hợp tạo lên sự linh động và mềm dẻo cho code , ở Vb.NET dùng delegate rất an toàn

Eg : khai báo

Delegate Sub DisplayMessage(ByVal msg As String)

' ta có 1 sub như sau

' Display a string in the Debug window

Sub WriteToDebugWindow(ByVal msgText As String)

Debug.WriteLine(msgText)

End Sub

Dim X as new DisplayMessage( address of WriteToDebugWindow) X.Invoke(" String here")

9 Gán sự kiện cho nhiều đối tượng

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)

Handles MyBase.Load

'Đăng ký 2 sự kiện cho tất cả điều khiển trên FORM

For Each ctrl As Control In GetChildControls(Me)

AddHandler ctrl.MouseEnter, AddressOf Control_MouseEnter

AddHandler ctrl.MouseLeave, AddressOf Control_MouseLeave

Next

End Sub

‘Khai bao c ỏc th ủ t ục s ự ki ện

Private Sub Control_MouseEnter(ByVal sender As Object, ByVal e As

EventArgs)

Dim ctrl As Control = DirectCast(sender, Control)

If Not ctrl.Tag Is Nothing Then ToolStripStatusLabel1.Text =

ctrl.Tag.ToString()

Trang 8

End Sub Private Sub Control_MouseLeave(ByVal sender As Object, ByVal e As EventArgs)

ToolStripStatusLabel1.Text = ""

End Sub

‘Ham tra ve cac dieu khien thuoc p arent

Function GetChildControls(ByVal parent As Control) As ArrayList Dim result As New ArrayList()

For Each ctrl As Control In parent.Controls result.Add(ctrl)

result.AddRange(GetChildControls(ctrl)) Next

Return result End Function

10 Cho phép nestesed Class ( chồng lớp )

Vb.NET cho phép khai báo định nghĩa 1 hay nhiều class và cả các interface trong class khác, do vậy

tăng khả năng đóng kin( encapsualation)

Class Outer …

Class Inner …

End Class End Class

Để tạo 1 instance Inner ta code:

Dim ClsInner As New outer.Inner Thông tin:

Với VB 6.0 phải khai báo Inner class ở modul khác, sau đó tạo 1 đối tương cls inner trong outer

11 Kế thừa

VB.Net chỉ hỗ trợ kế thừa từ một class thông qua từ khoá INHERITES

,cho phép class con được quyền Overiding các sub, property của class cha Các từ khoá mới :

MyBase : Truy cập vào lớp class cha

MyClass : Truy cập vào class hiện thời, dùng trong trường hợp cần sub hay function nguyên gốc của class ( không phải các sub, f đã bị overriding )

Me : Dùng với tất cả đối tượng,truy cập đối tượng hiện thời

Thông tin :

Từ khoá INHERRITS cho phép kế thừa toàn bộ từ các class cha ( trừ các property được khai báo

NotInheritAble), do vậy nếu chỉ muốn kế thừa 1 số property xác định thì không được

12.Interface

Từ khoá interface chép phép tạo 1 mẫu cho trước có tác dụng tương tự với các lớp được khai báo

MustInherit ( trừ việc không thừa kế được ), interface là 1 kiểu lớp chỉ có tên thủ tục & hàm đuợc thiết

kế trước, muốn sử dụng phải implements sau đó code VB cũng cấp nhiều các Interface có sẵn giúp giảm thời gian thiết kế cho programmer

Đáng lưu ý là interface lại có thể kế thừa từ nhiều interface khác trong khi CLASS chỉ được kế thừa từ một cha

Ví du :

Interface INguoi

Trang 9

Sub An()

End Interface

Muốn dùng interface Inguoi ta phải implements nó ví dụ

Class NhacSi

‘ Code Here

End Class

13.Generic ( áp dụng nhiều cho class và structure )

Thực tế một thủ tục có thể chấp nhận tham số nhiều kiểu : chuỗi, currenty, long,… ví dụ : thủ tục

tính toán +,-… trong máy tính điện tử cùng 1 phép cộng phải thao tác với hàng chục kiếu dữ liệu, bình thường ta có thể viết 10 thủ tục cộng để thao tác với 10 kiểu dữ liệu ( đương nhiên ta chỉ cần dùng 1 kiểu số là double có thể thay thế cho cả interger , real nhưng sẽ tăng thời gian thực hiện do VB sẽ chuyễn int về Double dễ gây bug ), cho dù có dùng overload thì cũng mất thời gian, do vậy NET cung cấp kiểu generic cho phép ta chỉ cần dùng 1 thủ tục là đủ giảm thời gian lập trình:

Ví dụ : ta có mẫu

Sub Swaps( Of T)( ByRef So1 As T, ByRef So2 As T) Dim temp As T

temp = So1 So1 = So2 So2 = temp End Sub

Thủ tục swaps trên có thể áp dụng cho mọi kiểu dữ liệu thay vì phải viết hàng chục modul swap : eg : swapInt, SwapDate,SwapLong…

ví dụ :

Thông tin ; Đương nhiên ta có thể dùng kiểu object hay VARIANT của VB6 nhưng như vậy sẽ chậm do kiểu phải qua 1 lần convert ,dễ gây bug , hơn nữa kiểu generic còn được hỗ trợ mạnh khi viết các CLASS năng động chấp nhận rất nhiều loại thông tin đầu vào không chỉ dừng ở các kiểu cơ bản như long, int, string mà còn các kiểu UDT

14 Các thông tin khác

Vb.Net cho phép các UDT, các cấu trúc khác như array cũng được khai báo PUBLIC trong class do vậy làm CLASS linh động hơn rất nhiều

B.Các đối tượng mới trong VB.NET

1 Đối tượng Objects trong NET

Các kiểu dữ liệu trong Net đều khởi phát từ đối tượng này : gồm các thủ tục và hàm chuẩn :

+ Equals : Trả về true nếu giá trị của đối tượng = giá trị đầu vào

+ GetHashCode : Trả về mã ID của đối tượng + ToString : Trả về tên của đối tượng dạng chuỗi + GetType : trả về kiểu dữ liệu

+ ReferenceEquals : Trả về true nếu 2 đối tường đầu vào cùng trỏ đến 1 địa chỉ 2.String

Kiểu chuỗi rất mạnh trong NET có thể thao tác như mảng ký tự trên PASCAL Nếu một chuỗi được dùng lặp lại nhiều lần VB cho phép chỉ lưu 1 bản sao duy nhât của chuỗi các chuỗi tương tự về sau sẽ trỏ đên chính địa chỉ của bản đầu tiên để tăng tốc độ thực thi

Ví dụ :

s1 = "ABCD"

s1 &= "EFGH"

' Chuyển S1 vào bộ đêm trong

Trang 10

s1 = String.Intern(s1) ' gán S2 bằng 1 hằng chuỗi đã được cached

s2 = "ABCDEFGH"

' Lúc này cả hai biến có cùng địa chỉ

Console.WriteLine(s1 Is s2) ' => True

3 Array

Kiểu array trên VB được hỗ trợ thêm nhiều chức năng như lọc ,sắp xếp…

4.Regular Expressions

Kiểu đối tượng hoạt động giống với LIKE nhưng linh động hơn và phức tạp hơn rất nhiều,Có thể thay thế nhiều đoạn mã xử lý chuỗi phức tạp chỉ bằng 1 lệnh đơn giản giảm thời gian viết code.Tuy vậy tốc độ xử lý chậm hơn so với LIKE và châm hơn nhiêu so với dùng FOR, hay WHILE để phân tích bù lại có thể dùng để code các trình phân tích cú pháp, chuỗi, tính toán biểu thức chỉ bằng một ít lệnh

Khi sử dụng cần imports

Imports System.Text

Imports System.Text.RegularExpressions

Ví dụ :

pattern = "^\d{5}$"

If Regex.IsMatch(text, pattern) Then ' Là một chuỗi gồm năm chữ số

End If

5 System Watches

Tương tự Timer dùng để đo thời gian thi hành ứng dụng

6 Threads lập trình đa luồng

Not Available yet

7 Serialization

Not Available yet

Danh mục các NameSpaces :

System.CodeDOM

Bao gồm các CLASS xử lý các phần tử và cấu trúc của mã nguồn

System.ComponentModel

Tựa như các hướng dẫn biên dịch lúc thiết kế và lúc chạy cho các điều khiển & các thành phần (COM)

System.Configuration

Hỗ trợ việc tạo các trình cài đặt tuỳ chọn cho thành phần phần mềm

System.Data

Bao gồm các CLASS cấu thành lên kiến trúc ADO.NET sử dụng cho việc kết nối CSDL

System.Diagnostics

Hỗ trợ gỡ rối và dò lỗi

System.DirectoryServices

Truy cập Active directory từ các managed code

System.Drawing

Truy nhập các hàm đồ hoạ gồm các lớp con System.Drawing.Drawing2D, System.Drawing.Imaging, and System.Drawing.Text namespaces

System.Net

Cung cấp các cách thức truy cập mạng như FTP and HTTP

Ngoài ra còn có các cách truy cập bậc thấp như WinSock:

The System.Net.Sockets

System.Reflection

Ngày đăng: 25/01/2014, 14:20

TỪ KHÓA LIÊN QUAN

w