У меня есть следующий код:
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?
Почему вторая броска не работает? Я понимаю, что это может быть потому, что у объекта нет явного приведения к длинному, но если мы посмотрим на его тип во время выполнения, это будет System.Int32
.
Если я использую var
или dynamic
вместо object
, он работает.
Любые мысли?