给出以下代码:
public static TUnbox UnboxAndNullCheck<TUnbox, TBox>(TBox obj, string msg = "Unboxing error") where TUnbox : class, TBox
{
var unboxObj = obj as TUnbox;
if (unboxObj == null)
throw new ArgumentNullException( msg );
return unboxObj;
}
似乎调用它需要两个类型参数:
UnboxAndNullCheck<SubClass, BaseClass>( obj );
是否有可能以不必指定obj类型的方式来调用它?
UnboxAndNullCheck<SubClass>( obj );
固定类型?
public static TUnbox UnboxAndNullCheck<TUnbox> (object obj, string msg = "Unboxing error") where TUnbox : class
但是我真的不确定仅使用is
和as
这会给您带来什么。除了在运行时混乱地抛出一个错误,说所传递的参数显然没有值时,不给它值!
编辑:实际上,我真的不确定只是进行演员转换会给您带来什么。如果可以将TBox强制转换为TUnbox,则可以使用。如果没有,则抛出异常