Các bài tập Microsoft .NET 51 Dưới đây là danh sách các collections ta sẽ dùng thường xuyên: Collection Chức năng ArrayList Dynamic Array tự động lớn lên khi elements được bỏ vào. BitArray Array chứa trị số Boolean (True/False). HashTable Collection chứa những cặp key-value data, cho ta dùng làm tự điển. Queue Chứa một FIFO (First In, First Out) structure. Element có thể là bất cứ Object loại nào. Stack Chứa một LIFO (Last In, First Out) structure. SortedList Chứa một danh sách những cặp key-value data được sắp theo thứ tự. Arithmetic Operators mới 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. X += 4 tương đương với X = X + 4 Mess &= " text" tương đương với Mess = Mess & " text" Arithmetic Operation Trong VB6 Cách viết tắc mới Cộng X = X +5 X += 5 Trừ X = X - 10 X -= 10 Nhân X = X * 7 X *= 7 Chia X = X / 19 X /= 19 Chia Integer X = X \ 13 X \= 13 Lũy thừa X = X ^ 3 X ^= 3 Ghép Strings X = X & "more text" X &= "more text" 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. Các bài tập Microsoft .NET 52 Short Circuit trong IF THEN Statement Trong VB6, nếu ta viết: Dim myInt As Integer myInt = 0 If (myInt <> 0) And (17 \ myInt < 5 ) Then Thì sẽ bị Division by Zero error, vì mặc dầu phần (myInt <>0) là False, nhưng VB6 vẫn tiếp tục tính phần (17 \ myInt < 5 ), 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. Tuy nhiên, nếu ta muốn dùng đặc tính Short-Circuit thì ta chỉ cần thay thế chữ And bằng AndAlso như sau: Dim myInt As Integer myInt = 0 If (myInt <> 0) AndAlso (17 \ myInt < 5 ) Then Short-Circuit cũng áp dụng cho Logical OR khi ta thay thế chữ Or bằng OrElse để nói rằng khi phần đầu của OR là True thì nhất định kết quả của Logical Statement trong IF phải là True. Không còn Set statement cho Object Trong VB6 ta có thể viết: Set x = New Product Set w = x Trong VB.NET sẽ được viết lại như sau: Các bài tập Microsoft .NET 53 x = New Product() w = x Bây giờ ta không cần phải nhớ dùng chữ Set khi nói đến Object. Thay đổi trong cách viết Property routines Dùng một Property duy nhất Nếu trong VB6 ta viết: Private mdescription as String Public Property Let Description (Value As String) mdescription = Value End Property Public Property Get Description() As String Description = mdescription End Property 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: Private mdescription As String Public Property Description() As String Set (ByVal Value As String) mdescription = Value End Set Get Description = mdescription End Get End Property ReadOnly và WriteOnly property Bây giờ nếu Property là ReadOnly ta sẽ viết: Các bài tập Microsoft .NET 54 Public ReadOnly Property Age() As Integer Get Age = 3 End Get End Property hay WriteOnly ta sẽ viết: Private _data As Integer Public WriteOnly Property Data() As Integer Set (ByVal Value As Integer) _data = Value End Set End Property Default Properties Ta dùng Default keyword để tạo ra Default Property như sau: Default Public Property Item(ByVal Index As Integer) As String VB.NET bắt buộc ta phải ít nhất một parameter cho Default Property. Dùng Reserved Word làm Procedure Name 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. Giả tỉ ta muốn dùng chữ Compare làm tên một Function, ta sẽ viết như sau: Public Function [Compare] (ByVal v1 As Integer, ByVal v2 As Integer) As Boolean Structured Error Handling TRY CATCH FINALLY VB.NET cho ta Structure TRY CATCH FINALLY END TRY để xử lý error. Thí dụ như trong bài toán chia dưới đây, nếu bị Division by 0 error thì ta sẽ cho kết quả bằng 0. Dù có error hay không, program vẫn hiển thị kết quả trong Output Window qua statement Console.WriteLine( result) trong phần Finally: Các bài tập Microsoft .NET 55 Try result = a / b ' if this section has error jump to Catch section Catch ' only get here if an error occurs between Try and Catch result = 0 Finally ' This section is optional, but is always executed whether there is an error or not Console.WriteLine( result) End Try Nếu ta không code gì ở phần Catch thì có nghĩa là chúng ta có Handle Error nhưng lại không làm gì hết, do đó Program sẽ không té. 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, Những cách CATCH error Ta có thể dùng Catch giống như Select Case để có một cách xử lý cho mỗi error: Try ' Main code goes here Catch When Err.Number=5 ' handle Error 5 Catch ' handle other errors End Try Ta có thể Catch Error Exception data trong một variable để dùng nó như sau: Catch e as Exception MessageBox.Show (e.ToString) Hai cách code ở trên có thể được gợp lại thành: . Các bài tập Microsoft .NET 51 Dưới đây là danh sách các collections ta sẽ dùng thường xuyên: Collection. 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. Các bài tập Microsoft .NET 52 Short Circuit trong IF THEN Statement Trong VB6, nếu ta viết: Dim myInt. VB6 ta có thể viết: Set x = New Product Set w = x Trong VB.NET sẽ được viết lại như sau: Các bài tập Microsoft .NET 53 x = New Product() w = x Bây giờ ta không cần phải nhớ dùng chữ Set khi nói