Mar*_*son 2 c# generics types casting
我怀疑答案是否定的,但是可以在C#.NET(v2.0)中做这样的事情.
class Converter<E>
{
public E Make(object o)
{
return o as E;
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有,是否可以检查这样的类型:
public bool IsType(object o, Type t)
{
return o is E;
}
Run Code Online (Sandbox Code Playgroud)
我不确定这个术语所以谷歌对我来说相当困难.但我的猜测是这两个问题是相关的.有任何想法吗?
你可以施放o到E使用()操作:
class Converter<E>
{
public E Make(object o)
{
return (E)o;
}
}
Run Code Online (Sandbox Code Playgroud)
如果使用as,则o as E需要E成为引用类型,因为如果o不能转换为E,则结果为(E)null.您可以E使用类 Constraint约束引用类型:
class Converter<E> where E : class
{
public E Make(object o)
{
return o as E;
}
}
Run Code Online (Sandbox Code Playgroud)
public bool IsType(object o, Type t)
{
return (o != null) ? t.IsAssignableFrom(o.GetType()) : t.IsClass;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1525 次 |
| 最近记录: |