如何返回可空类型作为方法输出

本文关键字:类型 方法 输出 何返回 返回 | 更新日期: 2023-09-27 18:17:27

这是我的代码,我试图返回temp,但它说"不能隐式转换类型'int?'到'int'。存在显式转换(您是否缺少强制类型转换?)

 public int? pop(int? i)
    {
        if (i == 1)
        {
            int j = (n/2);
            int? temp;
            bool flag1=true;
            while (j>=0)
            {
                if (dstack[j] != null)
                {
                    temp = dstack[j];
                    dstack[j] = null;
                    flag1=false;
                    break;
                }
                j--;
            }
            if (flag1)
                Console.WriteLine("stack 1 is empty:");
            return temp;
        }
    }

如何返回可空类型作为方法输出

使返回类型为int?并调整调用代码以处理可空返回类型(考虑它可能没有值):

public int? pop(int? i)

现在的错误是有意义的。

或者,返回temp.Value,这是一个int,但您需要决定一个默认值(在temp确实为null的情况下):

return temp.HasValue ? temp.Value : -1;

将temp设置为int?实际上没有任何意义。您不需要它,并且从方法签名的外观来看,您需要在调用方中使用int

您需要的是temp的默认值。所以我最后的建议是选择一个对你有意义的默认值,并删除所有可空的整型。

在c# 8.0及更高版本中,您可以使用空合并运算符??并返回int值:

return temp ?? -1;

当temp不为空时返回temp,当temp为空时返回-1。

关于Microsoft文档的更多信息