C# 通用铸件
我怀疑答案是否定的,但在C#NET(v2.0)中是否可以这样做 我对术语没有把握,所以我很难用谷歌搜索。C# 通用铸件,c#,generics,types,casting,C#,Generics,Types,Casting,我怀疑答案是否定的,但在C#NET(v2.0)中是否可以这样做 我对术语没有把握,所以我很难用谷歌搜索。 但我猜这两个问题是相关的。有什么想法吗?您可以使用以下命令将o转换为E: 它在这里可能不相关,但是as也适用于可空值类型。因此,例如o as int?确实可以编译。请注意,在第一个示例中,如果E是不可为null的值类型,则取消装箱转换必须是精确的;也就是说,如果对象包含已装箱的int,即使可以将int转换为double,也不能将其取消装箱为double。 class Converter&l
但我猜这两个问题是相关的。有什么想法吗?您可以使用以下命令将
o
转换为E
:
它在这里可能不相关,但是
as
也适用于可空值类型。因此,例如o as int?
确实可以编译。请注意,在第一个示例中,如果E是不可为null的值类型,则取消装箱转换必须是精确的;也就是说,如果对象包含已装箱的int,即使可以将int转换为double,也不能将其取消装箱为double。
class Converter<E>
{
public E Make(object o)
{
return o as E;
}
}
public bool IsType(object o, Type t)
{
return o is E;
}
class Converter<E>
{
public E Make(object o)
{
return (E)o;
}
}
class Converter<E> where E : class
{
public E Make(object o)
{
return o as E;
}
}
public bool IsType(object o, Type t)
{
return (o != null) ? t.IsAssignableFrom(o.GetType()) : t.IsClass;
}