如何返回可空类型作为方法输出
本文关键字:类型 方法 输出 何返回 返回 | 更新日期: 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文档的更多信息