Я столкнулся со странной проблемой приведения типов при использовании дженериков. Следующий код вызовет исключение InvalidCastException
, хотя очевидно, что int
можно привести к double
. Может ли кто-нибудь объяснить это поведение и как его обойти?
public class TestClass<T>
{
public T Cast(object o)
{
return (T)o;
}
}
public void Main()
{
TestClass<double> w = new TestClass<double>();
double x = w.Cast(10);
}
Изменить:
Так как я в любом случае нахожусь в зоне .net 4.0, я изменил его на использование «динамического» вместо «объекта», и все работает, как ожидалось. Цените все точные и быстрые ответы.