【发布时间】:2020-06-10 15:00:02
【问题描述】:
给定以下代码:
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 );
【问题讨论】:
-
我不认为这可能就像我们不能拥有
Dictionary<int> -
这给你的调用代码带来了什么,而仅仅使用
as却没有? -
另外,它使用 ArgumentNullException 不正确; ANE 适用于当参数为 null 时,而不适用于代码中的某些内容为 null 时(这就是 NullReferenceException 的用途),从而导致 null。这会让其他开发人员感到困惑——“为什么我确实提供了有价值的东西,但我却得到了 Arg Null?”
-
我举了一个例子来说明我问的问题。
标签: c#