当required参数为null时,如何在泛型方法中不指定type参数?

时间:2013-07-18 15:15:26

标签: c# generics methods arguments default

我有一个方法:

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

我可以称之为:

var request = CreateRequest<int>();

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

修改 关键是,我通常需要指定一个类型并使用参数。但是有时我不需要使用参数,我希望它被设置为Null或Zero,而不是在上面的例子中写一个像'int'这样的随机类型

2 个答案:

答案 0 :(得分:1)

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

您可以创建另一个没有任何通用参数的方法,因此您可以将其称为:

var request = CreateRequest();

答案 1 :(得分:0)

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

要绕过它,你可以写一个非通用的包装器。