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.

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:
  1. 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.
  2. Phạm vi của một biến được hiển thị ngay lập tức.
  3. Một số lỗi lầm tự nhiên bộc lộ ra.
  4. 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.
Một ví dụ về việc sử dụng các chữ viết tắt (bất kể đoạn mã bên dưới có hợp lý hay không):
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 hai UserControl 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:

  1. Không tính đến yếu tố di truyền .
  2. 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.
  3. 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.
  4. 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:

  1. Không tính đến yếu tố di truyền .
  2. 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.
  3. 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.
  4. 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:

  1. Có tính đến yếu tố di truyền.
  2. 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.
  3. 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.
  4. 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ãn
usrX
usrX 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:

  1. Không tính đến yếu tố di truyền .
  2. 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.
  3. 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.
  4. 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 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.