2008-11-24 14 views
7

Giả sử bạn tạo một biến Object chung và gán nó cho một cá thể cụ thể. Nếu bạn làm GetType(), nó sẽ nhận được kiểu Object hay kiểu của lớp gốc?Các đối tượng C# có biết loại lớp cụ thể hơn không?

+0

Bạn đã thử 10 dòng mã để thử điều này chưa? –

+0

Yep - Tôi đã thực hiện việc này dưới dạng câu hỏi "có câu hỏi và muốn chia sẻ câu trả lời" :) – Kalid

+0

... đã đăng cùng lúc với câu trả lời dùng thử của bạn! –

Trả lời

3

Có.

Bạn cũng có thể làm:

object c = new FooBar(); 
if(c is FooBar) 
    Console.WriteLine("FOOBAR!!!"); 
2

Câu trả lời ngắn: GetType() sẽ trả Type của đối tượng cụ thể. Tôi đã thực hiện một ứng dụng nhanh để kiểm tra điều này:

 Foo f = new Foo(); 
     Type t = f.GetType(); 

     Object o = (object)f; 
     Type t2 = o.GetType(); 

     bool areSame = t.Equals(t2); 

Và yep, chúng giống nhau.

+0

sử dụng: nếu (o là Foo) thay thế. – Alan

0

Gọi GetType() sẽ gọi loại ACTUAL. Nếu bạn muốn biết loại cơ sở, bạn có thể gọi GetType(). BaseType

Các vấn đề liên quan