Tôi có đoạn mã sau:Hành vi truyền lạ. không thể cast đối tượng (int) để lâu
int intNumber1 = 100;
object intNumber2 = 100;
bool areNumberOfTheSameType = intNumber1.GetType() == intNumber2.GetType(); // TRUE
bool areEqual = intNumber1.Equals(intNumber2); // TRUE
long longNumber1 = (long) intNumber1; // OK
long longNumber2 = (long) intNumber2; // InvalidCastException. Why?
Tại sao không phải là công việc diễn viên thứ hai? Tôi nhận ra rằng có thể là do đối tượng không có dàn diễn viên rõ ràng trong một thời gian dài, nhưng nếu chúng ta xem xét loại của nó khi chạy là System.Int32
.
Nếu tôi sử dụng var
hoặc dynamic
thay vì object
, nó hoạt động.
Mọi suy nghĩ?
hãy thử thay đổi điều đó thành 'long longNumber2 = (long) (int) intNumber2;' –
Tại sao bạn muốn sử dụng đối tượng thay vì var trong trường hợp này? Tốt hơn là giữ cho các biến được gõ mạnh mẽ khi có thể –
@ Quinn351: tôi đoán là mã trên minh họa một vấn đề đơn giản mà người dùng có, tôi không nghĩ chúng ta nên coi nó như một thực tế hiện tại. – Abel