c#链??不同类型的操作符

本文关键字:操作符 同类型 | 更新日期: 2023-09-27 18:08:11

我正在为对象实现一个ToString方法。方法如下:

public override string ToString()
{
    return "E" + (myNum ?? SQLIndex) + STK.ExtraLabel(areaType);
}

其中myNum是一个可空的整型,而SQLIndex只是一个整型。

但是上级决定如果SQLIndex还没有设置(以前是= -1如果没有设置),我们应该在那里放"NEW"而不是-1。

所以我把SQLIndex改为可空的int,但这段代码不起作用,因为我猜?? ?操作符不能同时返回int和string,即使int将被强制转换为string:

public override string ToString()
{
    return "E" + (myNum ?? SQLIndex ?? "NEW") + STK.ExtraLabel(areaType);
}

我目前使用三元操作符来完成相同的效果,但为了可读性的缘故,有任何方法使用快捷方式??运营商吗?

c#链??不同类型的操作符

您需要将这里的所有表达式转换为单个类型。在这种情况下,string实际上是您想要结束的类型,因此在使用??之前,您必须将转换(而不是强制转换)整数转换为字符串。您可以使用ToString将整数转换为字符串:

return "E" + (myNum?.ToString() ?? SQLIndex?.ToString() ?? "NEW") + STK.ExtraLabel(areaType);

您可以将其中一个操作数强制转换为object:

return "E" + return "E" + (((object)myNum ?? SQLIndex) ?? "NEW") +  STK.ExtraLabel(areaType);

return "E" + return "E" + (myNum ?? (object)SQLIndex ?? "NEW") +  STK.ExtraLabel(areaType);

如果你不想要额外的括号