当所需参数为null时,如何不在泛型方法中指定类型参数

本文关键字:泛型方法 何不 类型参数 参数 null | 更新日期: 2023-09-27 18:23:52

我有一个方法:

public HttpRequestMessage CreateRequest<T>(T genericObject = default(T))
{
    ...
    if (!Equals(genericObject, default(T)))
    ...
}

我可以称之为:

var request = CreateRequest<int>();

鉴于我实际上并没有使用默认类型(我希望它默认设置为null),当我调用该方法时,我如何才能停止将泛型类型定义为int(或任何其他类型)?

编辑重点是,我通常需要指定一个类型并使用参数。然而,有时我不需要使用参数,我希望它设置为Null或Zero,而不是像上面示例中的"int"那样编写随机类型

当所需参数为null时,如何不在泛型方法中指定类型参数

不能,因为是方法的签名。

您可以创建另一个方法,该方法没有任何通用参数,因此您可以像这样调用它:

var request = CreateRequest();

我认为你做不到。对于泛型函数,您必须指定泛型参数,或者必须传递一些可以推断泛型参数的内容。

为了解决这个问题,你可以编写一个非通用的包装器。