C#: Phân biệt giữa typeof, GetType và is

+ typeof trả về kiểu của một lớp

System.Type  typeof(TênLớp)

trong đó TênLớp là tên một lớp đã khai báo. TênLớp được xác định khi thiết kế (design time).

+ is so sánh kiểu của kết quả của một biểu thức có tương thích với một lớp hay không

BiểuThức  is   TênLớp

+ GetType trả về kiểu của một biến khi chạy (Runtime):

System.Type TênBiến.GetType()

Ví dụ: có khai báo hai lớp và 2 biến như sau

class Nguoi {}
class NhanVien : Nguoi {}
....
Nguoi ng;
NhanVien nv;

Khi đó:

ng.GetType() == typeof(Nguoi) // cho kết quả là true
nv.GetType() == typeof(NhanVien) // cho kết quả là true
nv.GetType() == typeof(Nguoi) // cho kết quả là flase
ng is typeof(Nguoi) // cho kết quả là true
nv is typeof (Nguoi) // cho kết quả là true
ng is typeof(NhanVien) // cho kết quả là false
Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s