Tôi không thể tìm thấy mối quan hệ giữa các loại này bằng cách sử dụng .Net reflector. Bất kỳ ý tưởng?Nơi để biết/kiểm tra: Int32 kế thừa từ ValueType, ValueType kế thừa từ Object?
Trả lời
Kể từ khi bạn nói "sử dụng Net phản xạ":
Nếu bạn muốn phản ánh:
Type type = typeof (int);
while(type != null)
{
Console.WriteLine(type.FullName);
type = type.BaseType;
}
trong đó cho thấy:
System.Int32
System.ValueType
System.Object
và nếu bạn có nghĩa là IL:
.class public sequential ansi serializable sealed beforefieldinit Int32
extends System.ValueType
và:
.class public abstract auto ansi serializable beforefieldinit ValueType
extends System.Object
(trong phản xạ, chọn nút của loại, và chọn IL như xem)
Nếu bạn có ý nghĩa quan điểm # C, sau đó:
public struct Int32 ...
Là đủ; từ khóa struct
từ khóa có nghĩa là: được kế thừa từ ValueType
(mặc dù không hoàn toàn theo cách thông thường của C# class
). ValueType
vẫn còn là một lớp thông thường, và có:
public abstract class ValueType ...
và như thường lệ, một class
mà không chỉ định một cơ sở loại có nghĩa là: thừa hưởng từ object
.
Ý tôi là chế độ xem C#. Everyting là rõ ràng bây giờ. Cảm ơn Marc đã đưa ra các cách tiếp cận khác nhau rất tuyệt vời. – user1033098
+1 để giải thích các cách có thể khác nhau. – Adil
Câu hỏi hay, tôi cũng thú vị nhưng tôi nghĩ bạn không thể nhìn thấy nó trong phản xạ khiến chỉ những từ khóa như scruct hoặc enum định nghĩa kiểu làm giá trị cho trình biên dịch. –
@Denis bạn có thể thấy nó trong IL, C# và cây ... –
trình duyệt đối tượng trong VS cũng sẽ cung cấp cho bạn thông tin tương tự ... –