Почему это ошибка времени компиляции?
public TCastTo CastMe<TSource, TCastTo>(TSource i)
{
return (TCastTo)i;
}
Ошибка:
annot преобразует тип 'TSource' в 'TCastTo'
И почему это ошибка времени выполнения?
public TCastTo CastMe<TSource, TCastTo>(TSource i)
{
return (TCastTo)(object)i;
}
int a = 4;
long b = CastMe<int, long>(a); // InvalidCastException
// this contrived example works
int aa = 4;
int bb = CastMe<int, int>(aa);
// this also works, the problem is limited to value types
string s = "foo";
object o = CastMe<string, object>(s);
Я искал SO и интернет для ответа на этот вопрос и нашел множество объяснений по подобным общим вопросам, связанным с кастингом, но я не могу найти ничего в этом конкретном простом случае.