[VISUAL BASIC] TypeName, TypeOf và GetType trong
Xin chào mọi người, hôm nay mình sẽ viết bài chia sẽ cho mọi người phương pháp để xác định loại đối tượng, mỗi phương pháp có những đặc điểm riêng.
Việc sử dụng các chữ viết tắt có vẻ là một phương pháp lỗi thời trong thời đại của intellisense. Nhưng tôi là một người theo phong cách cũ và nó vẫn mang lại nhiều lợi thế cho tôi:
Ví dụ:
Ví dụ:
Ví dụ:
Lấy Loại
Ví dụ:
Mặc dù có sự kế thừa, kết quả chỉ là:
Như vậy chúng ta đã biết sơ bộ về cách để xác định đối tượng và mồi dòng code trong này là một phương pháp riêng để mọi người dễ nắm bắt nhất nhé.
Chúc mọi người thành công với hướng dẫn trên.
Giới thiệu
Có một số phương pháp có thể xác định loại đối tượng, mỗi phương pháp có những đặc điểm riêng. Trước khi sử dụng chúng, bạn nên biết cách sử dụng chúng. Tôi đã dành thời gian để tìm phương pháp cuối cùng (GetType) và sử dụng theo cách được mô tả trong bài viết này.
Tôi hy vọng thông tin này có ích cho bạn.
Trước khi chúng ta bắt đầu
Bài viết này sử dụng các chữ viết tắt sau:Việc sử dụng các chữ viết tắt có vẻ là một phương pháp lỗi thời trong thời đại của intellisense. Nhưng tôi là một người theo phong cách cũ và nó vẫn mang lại nhiều lợi thế cho tôi:
- Bạn có thể nhận ra ngay các khai báo, định nghĩa đối tượng, chương trình con, hàm, v.v. của riêng mình.
- Phạm vi của một biến được hiển thị ngay lập tức.
- Một số lỗi lầm tự nhiên bộc lộ ra.
- Bạn phải nghĩ ra ít tên hơn. Và tin tôi đi, nghĩ ra những cái tên hay, có ý nghĩa và rõ ràng không phải là một công việc dễ dàng chút nào.
Private Enum enmAction As Byte
encNo = 0
encYes = 1
End Enum
Private varText As String = "Test"
Private Function mtdTextToCapitals( _
ByVal parText As String, _
ByVal parAction As enmAction) As String
Dim mvrText As String = Trim(parText)
If parAction = enmAction.encYes Then
mvrText = mvrText.ToUpper
End If
Return mvrText
End Function
Private Sub Form1_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load
Dim mvrText as String = mtdTextToCapitals(varText, enmAction.encYes)
End Sub
Hãy bắt đầu
Trong bài viết này sẽ sử dụng haiUserControl sau:Public Class usrX Inherits Label End Class Public Class usrY Inherits Label End Class
Và, ví dụ trong một biểu mẫu, có hai trường hợp được thực hiện:
Private varX as new usrX varX.Name = "NameX" Private varY as new usrY varY.Name = "NameY"
Tên
Name xác định một thể hiện của đối tượng bằng tên của nó (chuỗi).Ví dụ:
If varX.Name = "NameX" Then 'Action here End If
Đặc trưng:
- Không tính đến yếu tố di truyền .
- Nhanh chóng, 10.000.000 lần kiểm tra chỉ mất khoảng 0,25 giây trên máy tính của tôi.
- Không kiểm tra kiểu, lỗi đánh máy trong tên đối tượng không được trình biên dịch phát hiện.
- Có sẵn trong Biểu mẫu và (Điều khiển) của người dùng.
LoạiTên
TypeName xác định một đối tượng bằng tên kiểu của nó (chuỗi).Ví dụ:
If TypeName(varX) = "usrX" Then 'Action here End If
Đặc trưng:
- Không tính đến yếu tố di truyền .
- Khá chậm, 10.000.000 lần kiểm tra chỉ mất khoảng 2 giây trên máy tính của tôi.
- Không kiểm tra kiểu, lỗi đánh máy trong tên đối tượng không được trình biên dịch phát hiện.
- Có sẵn trong Biểu mẫu, Điều khiển (Người dùng) và Lớp.
TypeOf xác định một đối tượng bằng tên kiểu của nó.Ví dụ:
If TypeOf varX Is usrX Then 'Action here End If
Đặc trưng:
- Có tính đến yếu tố di truyền.
- Rất nhanh, 10.000.000 lần kiểm tra chỉ mất khoảng 0,04 giây trên máy tính của tôi.
- Kiểm tra kiểu, lỗi đánh máy trong tên đối tượng sẽ được trình biên dịch phát hiện.
- Có sẵn trong Biểu mẫu, Điều khiển (Người dùng) và Lớp.
Ví dụ:
Dim mvrObject As Object = varX
If TypeOf mvrObject Is Label Then
Debug.WriteLine("Label")
End If
If TypeOf mvrObject Is usrX Then
Debug.WriteLine("usrX")
End If
If TypeOf mvrObject Is usrY Then
Debug.WriteLine("usrY")
End If
Kết quả là:
NhãnusrXusrX kế thừa Label, và do đó TypeOftrả về True cho usrXnhưng cũng cho Label.Lấy Loại
GetType xác định một đối tượng bằng tên kiểu của nó.Ví dụ:
If mvrObject.GetType Is GetType(usrX) Then 'Action here End If
Đặc trưng:
- Không tính đến yếu tố di truyền .
- Rất nhanh, 10.000.000 lần kiểm tra chỉ mất khoảng 0,045 giây trên máy tính của tôi.
- Kiểm tra kiểu, lỗi đánh máy trong tên đối tượng sẽ được trình biên dịch phát hiện.
- Có sẵn trong Biểu mẫu, Điều khiển (Người dùng) và Lớp.
Dim mvrObject As Object = varX
If mvrObject.GetType Is GetType(Label) Then
Debug.WriteLine("Label")
End If
If mvrObject.GetType Is GetType(usrX) Then
Debug.WriteLine("usrX")
End If
If mvrObject.GetType Is GetType(usrY) Then
Debug.WriteLine("usrY")
End If
Mặc dù có sự kế thừa, kết quả chỉ là:
usrX.Như vậy chúng ta đã biết sơ bộ về cách để xác định đối tượng và mồi dòng code trong này là một phương pháp riêng để mọi người dễ nắm bắt nhất nhé.
Chúc mọi người thành công với hướng dẫn trên.
