【发布时间】:2021-09-11 06:10:34
【问题描述】:
为什么这是编译时错误?
public TCastTo CastMe<TSource, TCastTo>(TSource i)
{
return (TCastTo)i;
}
错误:
无法将类型“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 和互联网上搜索了这个问题的答案,并找到了很多关于类似通用相关铸造问题的解释,但我在这个特别简单的案例中找不到任何东西。
【问题讨论】:
标签: c# .net generics .net-4.0 casting