C# 在c中键入类变量#
如何使用类型变量强制转换? 考虑下面的代码C# 在c中键入类变量#,c#,casting,C#,Casting,如何使用类型变量强制转换? 考虑下面的代码 public static object As(object o1, Type t1) { return (t1)o1; } 但它向我显示了一个错误,t1是一个变量,被用作类型。如何实现此目的。是否可以从类型对象检索类型。我被要求在c中实现Is和as运算符,因此方法名。尝试以下操作: public static T Cast<T>(object obj, Type castTo) { return (T)Convert.
public static object As(object o1, Type t1)
{
return (t1)o1;
}
但它向我显示了一个错误,t1是一个变量,被用作类型。如何实现此目的。是否可以从类型对象检索类型。我被要求在c中实现Is和as运算符,因此方法名。尝试以下操作:
public static T Cast<T>(object obj, Type castTo)
{
return (T)Convert.ChangeType(obj, castTo);
}
publicstatict转换(objectobj,类型castTo)
{
返回(T)转换.ChangeType(obj,CASTO);
}
例如:
泛型…….转换还是转换?方法返回对象,我不认为有理由强制转换它。对于转换,请使用Convert.ChangeType如果您不使用
dynamic
,而是通过object
并执行T Cast(object obj,Type castTo){return(T)Convert.ChangeType(obj,castTo);}
,则不需要返回dynamic
。谢谢。我以非泛型的方式更新了anwseris。@NagasivaniSiddana:您可以使用此版本:,并使用dynamic。但我认为我的答案更为优雅,因为它显示了一个错误,即对象应该实现Iconvertable接口