« Home « Kết quả tìm kiếm

Những khác biệt giữa VB.NET với VB6


Tóm tắt Xem thử

- Những khác biệt giữa VB.NET với VB6.
- Dầu vậy, đối với VB6 programmers học VB.NET không khó.
- Lý do là VB.NET không cho thêm nhiều từ mới (reserved words).
- Nói chung các ý niệm mới trong VB.NET đều dễ lĩnh hội, nhất là khi đem ra áp dụng cách thực tế.
- Đó là nhờ Microsoft vẫn giữ nguyên tắc dấu và làm sẵn (của VB6) những gì rắc rối phía sau sân khấu, để ta có thể tập trung vào việc tìm kiếm một giải pháp, thay vì quá bận tâm vào cách thức làm một việc gì.
- VB.NET cống hiến cho VB programmers một công cụ rất hữu hiệu để dùng cho mọi hoàn cảnh, từ database, desktop, distributed, internet cho đến real-time hay mobile (pocket PC).
- Những ưu điểm (features) của VB.NET đến từ chức năng của .NET Framework.
- Những thứ nầy tuy lạ nhưng không khó học, ngược lại sẽ tiết kiệm rất nhiều thì giờ.Mặc dầu VB6 là một ngôn ngữ lập trình trưởng thành và hiệu năng, chắc chắn hãy còn tồn tại trong nhiều năm nữa, nhưng học thêm VB.NET là một đầu tư tương đối ít tốn kém và đảm bảo huê lợi gấp bao nhiêu lần trong hàng thập niên tới.Trong bài nầy ta sẽ bàn về những điểm khác nhau giữa VB6 và VB.NET từ quan điểm ngôn ngữ lập trình.
- Trong một bài khác ta sẽ bàn về những chức năng Đối tượng (Object Oriented) của VB.NET.Namespaces.
- Tất cả code trong .NET, viết bằng VB.NET, C# hay ngôn ngữ nào khác, đều được chứa trong một namespace.Điểm nầy cũng áp dụng cho code trong .NET system class libraries.
- Namespaces trong .NET khắc phục được mọi giới hạn nói trên trong VB6.Nhiều assemblies có thể nằm trong cùng một namespace, nghĩa là classes tuyên bố trong các components khác nhau có thể có chung một namespace.
- Điều nầy cũng áp dụng xuyên qua các ngôn ngữ, giúp cho một class viết trong VB.NET có thể nằm trong cùng một namespace với một class viết trong C#, chẳng hạn.Hơn nữa, trong một assembly có thể có nhiều namespaces, dù rằng thông thường ta chỉ dùng một namespace duy nhất cho tất cả các classes trong ấy..
- Nhớ là một assembly trong .NET thì đại khái tương đương với một COM component.Tất cả code trong .NET đều nằm trong những assemblies..
- Bạn có thể thay đổi tên namespace ấy nếu bạn muốn.Namespaces có thể được phân chia thứ bậc giống như Folders trong một File Directory.
- Trong File Directory, ta có thể có hai files dù mang cùng tên nhưng nằm trong hai folders khác nhau.
- Giống như vậy, trong .NET ta có thể có hai classes có cùng một tên nhưng nằm trong hai namespaces khác nhau.
- Đó là vì khi ta viết tên của một class với cả namespace của nó thì có thể phân biệt với một class khác với cùng tên..
- của chúng áp dụng cho khắp cả computer, namespaces của .NET thông thường là Local, chỉ có application program của nó thấy mà thôi..
- .NET cũng hổ trợ Global namespace, nhưng phải được ký tên (digitally signed) và đăng ký với .NET runtime để chứa nó trong global assembly cache.Công việc làm một namespace Global rắc rối như thế để giảm thiểu trường hợp ta trở về tình trạng DLL hell trước đây..
- Ta có thể dùng namespaces bằng cách nói thẳng ra (explicitly) với nguyên tên (Direct Addressing) hay hàm ý (implicitly) với Import keyword.
- Khi Add References dialog hiện ra, chọn Tab .NET cho standard .NET components hay Tab Projects cho DLL của một .NET project khác , highlight DLL bạn muốn rồi click Select button, đoạn click OK..
- Trong cách Direct Addressing ta sẽ code như sau để viết hàng chữ.
- System.Console.WriteLine ("Hello world!").
- Nếu ta dùng Import keyword bằng cách nhét vào câu Imports System.Console ở đầu code module, ta có thể code gọn hơn:.
- Sau đó ta có thể code:.
- Bây giờ muốn nói đến class PhòngLạnh bên trong namespace TồnKho ta sẽ code như sau:.
- Một thay đổi lớn cho Data Type của VB.NET, là những variables dùng Data Type địa phương như Integer, Single, Boolean,.v.v..
- Class căn bản nhất tên Object trong VB.NET.
- Việc chia số nổi (Single, Double) trong VB.NET được làm theo đúng tiêu chuẩn của IEEE.
- Do đó nếu ta viết code như sau:.
- VB.NET dùng Decimal data type với 128 bits để thay thế Currency data type trong VB6.
- Nó có thể biểu diễn một số tới 28 digits nằm bên phải dấu chấm để cho thật chính xác.
- VB.NET có cả Byte lẫn Char data type.
- Byte được dùng cho một số nhỏ 0-255, có thể chứa một ASCII character trong dạng con số.Char được dùng để chứa một Unicode (16 bit) character..
- Nhìn lướt qua, String trong VB.NET không có vẻ khác VB6 bao nhiêu.
- Nhưng trừ khi ta muốn tiếp tục dùng các Functions như InStr, Left, Mid and Right trong VB6, ta nên xem String là một object và dùng những Properties/Functions của nó trong VB.NET cho tiện hơn.
- Sau nầy ta sẽ học thêm về String của VB.NET trong một bài riêng.Ý niệm fixed-length (có chiều dài nhất định) String trong VB6 không còn dùng nữa.
- Một variable thuộc data type Variant có thể chứa gần như thứ gì cũng được (trừ fixed-length string), nó tự động thích nghi bên trong để chứa trị số mới.
- Cái giá phải trả cho sự linh động ấy là program chạy chậm và dễ có bugs tạo ra bởi sự biến đổi từ data loại nầy qua loại khác không theo dự tính của ta.VB.NET thay thế Variant bằng Object.
- Vì trên phương diện kỹ thuật tất cả data types trong .NET đều là Object nên, giống như Variant, Object có thể chứa đủ thứ.Nói chung, dầu Object giống như Variant, nhưng trong .NET ta phải nói rõ ra (explicitly) mình muốn làm gì.
- Ta thử xem một thí dụ code trong VB6 như sau:.
- Trong VB.NET, ta phải code cho rõ ràng hơn như sau để có cùng kết quả như trên hiển thị trong Output Window:.
- Trong VB.NET có Option Strict by default.
- Vì Object có thể chứa bất cứ thứ gì, khi ta muốn dùng nó như một loại data type hay class nào, ta phải đổi Object ra thứ ấy bằng CType, thí dụ:.
- Trong VB6 ta có thể Declare nhiều variables trên cùng một hàng như:.
- Dim i, j, k As Integer.
- Trong VB.NET thì cả ba i,j và k đều là Integer, và như thế hợp lý hơn..
- Dim X As Integer X = 12.
- Bây giờ trong VB.NET ta có thể gọp chung hai statements trên lại như sau:.
- Dim X As Integer = 12.
- Khi tuyên bố Constants trong VB.NET ta phải khai rõ Data type của nó là String, Integer, Boolean ..v.v.:.
- Public Const maxStudent As Integer = 30 Dim As New.
- vì VB6 không instantiate một Object Customer cho đến khi X được dùng đến - chuyện nầy rất nguy hiểm vì có thể tạo ra bug mà ta không ngờ.Trong VB.NET ta có thể yên tâm code:.
- Khi execution ra khỏi IF block ấy, X sẽ bị hủy diệt.Do đó, VB.NET sẽ than phiền là X undefined vì nó không thấy X bên ngoài IF block.
- Dim A As Integer = 5 Dim B As Integer = 5 If A = B Then.
- Trong VB.NET ta có thể quyết định giới hạn việc truy cập một Variable, Class, Structure .v.v..
- Ta chỉ có thể dùng Public ở mức độ Module, Namespace hay File.
- Ta chỉ có thể dùng Protected ở mức độ Class..
- NumberForMeOnly As Integer.
- Trong VB.NET không có Option Base và mọi Array đều có index bắt đầu từ 0.
- Dim myArray(10) As Integer.
- UBound của array nầy là 10 và LBound của tất cả arrays trong VB.NET đều là 0..
- Bạn có thể tuyên bố Array với những trị số khởi đầu như sau:.
- Dim myArray() As Integer.
- Trong VB.NET bạn cũng có thể tiếp tục dùng Preserve keyword để giữ nguyên trị số của các elements trong một array khi bạn ReDim nó.
- Tuy nhiên có một giới hạn cho array với hơn một dimension - bạn chỉ có thể resize dimention cuối (bên phải.
- Trong VB6 ta dùng nó như sau:.
- Public Type UStudent FullName As String Age As Integer End Type.
- VB.NET cũng giữ y đặc tính của UDT nhưng thay đổi chữ Type thành Structure:.
- Sở dĩ, có dùng Private là vì bên trong Structure có thể có Property, Sub/Function .v.v...
- VB.NET cho ta một thành phần collection rất hùng hậu trong Namespace System.Collections.
- Vì Collection là một trong những công cụ rất thông dụng và hiệu năng trong VB.NET nên ta sẽ có một bài dành riêng cho collection sau nầy.Dưới đây là danh sách các collections ta sẽ dùng thường xuyên:.
- Element có thể là bất cứ Object loại nào..
- VB.NET cho ta thêm cách viết Arithmetic Operator mới mà C programmers rất thích từ lâu nay..
- Ta vẫn có thể tiếp tục dùng cách viết trong VB6, nhưng bây giờ có thêm một cách viết gọn hơn..
- Dim myInt As Integer myInt = 0.
- và tạo ra error vì 17 chia cho một số 0.Trong vài ngôn ngữ lập trình khác, khi (myInt <>0) là False thì nó không tính thêm nữa, tức là nó nói rằng khi một phần của AND là False thì nhất định kết quả của Logical Statement trong IF phải là False.
- Ðặc tính nầy gọi là Short-Circuit (đi tắc).Nếu ta dùng code nói trên trong VB.NET, nó vẫn cho Division by Zero error giống như VB6.
- Trong VB6 ta có thể viết:.
- Trong VB.NET sẽ được viết lại như sau:.
- Nếu trong VB6 ta viết:.
- Trong VB.NET Let và Get đuợc hợp lại trong một Property routine duy nhất và ta lại dùng chữ Set thay cho chữ Let (mặc dầu chữ Set không còn dùng cho Object như mới nói ở trên) như sau:.
- Public ReadOnly Property Age() As Integer Get.
- Private _data As Integer.
- Ta dùng Default keyword để tạo ra Default Property như sau:.
- VB.NET bắt buộc ta phải ít nhất một parameter cho Default Property..
- Trong VB.NET ta có thể dùng Reserved Word làm Procedure Name bằng cách để nó giữa ngoặc vuông.
- VB.NET cho ta Structure TRY...CATCH...FINALLY...END TRY để xử lý error.
- Ngược lại, nếu ta không dùng Try..Catch, thì program sẽ té.Nếu muốn nhảy ra khỏi Try Structure bất cứ lúc nào ta có thể dùng Exit Try,.
- Ta có thể dùng Catch giống như Select Case để có một cách xử lý cho mỗi error:.
- Ta có thể Catch Error Exception data trong một variable để dùng nó như sau:.
- Hai cách code ở trên có thể được gợp lại thành:.
- Trong VB.NET ta luôn luôn dùng cặp dấu ngoặc, ngay cả khi không có parameter.
- Tức là, Sub/Function có thể vô tình làm thay thổi trị số nguyên thủy của parameter variables.
- Trong VB.NET, ByVal là default cho các parameters passed vô Sub/Function.
- Trong VB6 ta có thể dùng IsMissing để biết xem Optional parameter có hiện diện không..
- VB.NET đã bỏ IsMissing và bắt buộc ta phải cung cấp trị số Default cho Optional parameter trong phần procedure declaration giống như sau đây.
- Trong VB.NET ta có thể dùng Return Statement để Return kết quả của một Function thay vì dùng chính tên của Function..
- Một trường hợp cổ điển ta dùng Delegate là cung cấp một dataArray để sort với một Function để so sánh mỗi hai items trong array.Trong VB.NET ta dùng AddressOf operator để pass một procedure.
- Dim myData() As Integer

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt