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

C# 当所需参数为null时,如何不在泛型方法中指定类型参数?,c#,generics,methods,arguments,default,C#,Generics,Methods,Arguments,Default,我有一个方法: public HttpRequestMessage CreateRequest<T>(T genericObject = default(T)) { ... if (!Equals(genericObject, default(T))) ... } publicHttpRequestMessageCreateRequest(T generiObject=default(T)) { ... 如果(!等于(genericObject,默认值(T)

我有一个方法:

public HttpRequestMessage CreateRequest<T>(T genericObject = default(T))
{
    ...
    if (!Equals(genericObject, default(T)))
    ...
}
publicHttpRequestMessageCreateRequest(T generiObject=default(T))
{
...
如果(!等于(genericObject,默认值(T)))
...
}
我可以称之为:

var request = CreateRequest<int>();
var request=CreateRequest();
鉴于我实际上没有使用默认类型(我希望它在默认情况下设置为null),在调用该方法时,如何停止将泛型类型定义为int(或任何其他类型)

编辑
关键是,我通常需要指定一个类型并使用参数。但是,有时我不需要使用参数,我希望它被设置为Null或零,而不是在上面的示例中编写像“int”这样的随机类型,我认为您不能这样做。对于泛型函数,您必须指定泛型参数,或者必须传递它可以从中推断泛型参数的内容


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

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

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

您不能,因为这是您的方法的签名

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

var request = CreateRequest();
您不能,因为这是您的方法的签名

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

var request = CreateRequest();

你的意思真的不清楚-编译器需要一些指示来说明
T
应该是什么…
null
不是类型。您需要指定希望该方法返回的内容,或者编写具有某种返回类型的非泛型方法。您的意思还不清楚-编译器需要指示
T
应该是什么…
null
不是类型。您需要指定希望该方法返回的内容,或者编写具有某种返回类型的非泛型方法。这是正确的答案!泛型方法始终需要对象类型引用。如果为null,则表示不需要它,然后需要一个非泛型方法。但是,有时我不需要使用参数,我希望它被设置为Null或零,而不是在上面的示例中编写像“int”这样的随机类型。@AntonJ:这是体系结构的决定,所以计算一下您使用参数和不使用参数的频率,以及添加或不添加没有任何泛型参数的方法的频率。这取决于你的便利程度。这是正确的答案!泛型方法始终需要对象类型引用。如果为null,则表示不需要它,然后需要一个非泛型方法。但是,有时我不需要使用参数,我希望它被设置为Null或零,而不是在上面的示例中编写像“int”这样的随机类型。@AntonJ:这是体系结构的决定,所以计算一下您使用参数和不使用参数的频率,以及添加或不添加没有任何泛型参数的方法的频率。这完全取决于你的方便。