Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通用铸件_C#_Generics_Types_Casting - Fatal编程技术网

C# 通用铸件

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

我怀疑答案是否定的,但在C#NET(v2.0)中是否可以这样做

我对术语没有把握,所以我很难用谷歌搜索。
但我猜这两个问题是相关的。有什么想法吗?

您可以使用以下命令将
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;
}