我可以为元组中的一个项返回空值吗?

PaR*_*RsH 7 c# asp.net null tuples

我有一个返回两个值的方法(HttpResponse和Generic对象).以下是代码段.

在某些情况下,我必须将其中一个项返回为null.我尝试了以下条件,但它没有奏效.

internal sealed class OnlineHelper<T>
{
   internal static Tuple<T, HttpStatusCode> GetRequest(arg1, arg2...)
   {
      ....
      if (webResponse.StatusCode == HttpStatusCode.OK)
      {
          return Tuple.Create(serializer.Deserialize<T>(response),
                     webResponse.StatusCode);
      }


      return Tuple.Create(null, webResponse.StatusCode); // Compiler error
      return Tuple.Create(default(T), webResponse.StatusCode);
      // ^- Throwing null reference exception.

   }
}
Run Code Online (Sandbox Code Playgroud)

Eni*_*ity 14

是的你可以.如果你这样做它有效:

var tuple = Tuple.Create<string, int>(null, 42);
Run Code Online (Sandbox Code Playgroud)

你试图让编译器确定它的类型null,它不能这样做,所以你必须明确提供泛型类型.

所以,在你的情况下,试试这个:

return Tuple.Create<T, HttpStatusCode>(null, webResponse.StatusCode);
Run Code Online (Sandbox Code Playgroud)

您还需要将通用class约束添加到您的方法以允许null转换为T.

internal static Tuple<T, HttpStatusCode> GetRequest(arg1, arg2...)
    where T : class
Run Code Online (Sandbox Code Playgroud)