Tôi đã phát hiện ra rằng nếu tôi chạy theo các dòng mã.Tại sao gọi một số chức năng của lớp Object, trên một thể loại nguyên thủy, cần boxing?
int i = 7;
i.GetHashCode(); //where GetHashCode() is the derived
//function from System.Object
Không đấm bốc được thực hiện, nhưng nếu tôi gọi i.GetType()
(một chức năng có nguồn gốc từ System.Object
) ở vị trí của GetHashCode()
, một đấm bốc sẽ được yêu cầu gọi GetType()
, Tại sao nó không thể gọi GetType()
vào loại dụ thô sơ trực tiếp , không có quyền anh, trong khi có thể gọi GetHashCode()
mà không có quyền anh?
Tôi ngạc nhiên rằng 'GetType' được gọi là gì cả. Vì C# được nhập tĩnh và một biến kiểu giá trị * không thể chứa bất kỳ thứ gì ngoài các đối tượng của kiểu giá trị, kiểu này có thể được định nghĩa ở kiểu biên dịch (đó là 'typeof (int)'). Vì vậy, tại sao phát hành một cuộc gọi thời gian chạy? –
Đúng vậy nhưng ý định ở đây là để làm rõ điều đó, tại sao mọi thứ không hoạt động theo cách họ cần. – waheed