CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 106

106
Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu

11.

11.

Ki m tra ki u c a m t đ i t

ng

ể ủ ộ ố ượ

Ki m tra ki u c a m t đ i t

ng

ể ủ ộ ố ượ

Bạn muốn kiểm tra kiểu của một đối tượng.

Sử dụng phương thức thừa kế

Object.GetType

để thu lấy

Type

cho đối tượng này.

Trong vài trường hợp, bạn cũng có thể sử dụng toán tử

is

as

để kiểm tra kiểu

của một đối tượng.

Tất cả các kiểu dữ liệu đều thừa kế phương thức

GetType

từ lớp cơ sở

Object

. Như đã được

thảo luận trong mục 3.10, phương thức này trả về một tham chiếu

Type

mô tả kiểu của đối

tượng. Bộ thực thi duy trì một đối tượng

Type

cho mỗi kiểu được nạp và tất cả các tham chiếu

cho kiểu này cùng chỉ đến đối tượng này. Điều này nghĩa là bạn có thể so sánh hai tham chiếu
kiểu một cách hiệu quả. Ví dụ dưới đây trình bày cách kiểm tra một đối tượng có phải là

System.IO.StringReader

hay không:

// Tạo một StringReader để thử nghiệm.

Object someObject =

new StringReader("This is a StringReader");

// Kiểm tra xem someObject có phải là một StringReader hay không

// bằng cách thu lấy và so sánh tham chiếu Type (sử dụng toán tử typeof).

if (typeof(System.IO.StringReader) == someObject.GetType()) {

// Làm gì đó.

§

}

C# cung cấp toán tử

is

để thực hiện nhanh việc kiểm tra như trên. Ngoài ra,

is

sẽ trả về

true

nếu đối tượng cần kiểm tra dẫn xuất từ lớp được chỉ định. Đoạn mã dưới đây kiểm tra xem

someObject

là một thể hiện của

System.IO.TextReader

, hay một lớp dẫn xuất từ

TextReader

(như

StringReader

):

// Kiểm tra xem someObject là TextReader,

// hay dẫn xuất từ TextReader bằng toán tử is.

if (someObject is System.IO.TextReader) {

// Làm gì đó.

§

}

Cả hai cách này đều đòi hỏi kiểu dùng với toán tử

typeof

is

phải là kiểu đã biết và khả

phân giải lúc biên dịch. Một cách khác linh hoạt hơn (nhưng chậm hơn) là sử dụng phương
thức

Type.GetType

để trả về một tham chiếu

Type

cho kiểu được chỉ định. Tham chiếu

Type

không được phân giải cho đến khi thực thi, việc này ảnh hưởng đến hiệu năng, nhưng cho
phép bạn thay đổi phép so sánh kiểu lúc thực thi dựa trên giá trị của một chuỗi. Phương thức

IsType

dưới đây sẽ trả về

true

nếu đối tượng thuộc kiểu được chỉ định và sử dụng phương

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.