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);
}
我目前使用三元操作符来完成相同的效果,但为了可读性的缘故,有任何方法使用快捷方式??运营商吗?
您需要将这里的所有表达式转换为单个类型。在这种情况下,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);
如果你不想要额外的括号