我正在为对象实现ToString方法。该方法看起来像:
public override string ToString()
{
return "E" + (myNum ?? SQLIndex) + STK.ExtraLabel(areaType);
}
其中myNum是一个可以为空的int,而SQLIndex只是一个int。
但权力决定如果SQLIndex尚未设置(如果未设置则为= -1),我们应该将" NEW"而不是-1那里。
所以我将SQLIndex更改为可以为空的int,但是这段代码不起作用,因为我猜测了??运算符不能返回int和string,即使int将被转换为字符串:
public override string ToString()
{
return "E" + (myNum ?? SQLIndex ?? "NEW") + STK.ExtraLabel(areaType);
}
我目前正在使用三元运算符来实现相同的效果,但出于可读性的考虑,有没有办法使用快捷方式?算子在哪里?
答案 0 :(得分:5)
您需要将此处的所有表达式转换为单一类型。在这种情况下,string
实际上是您想要最终使用的类型,因此在使用{{1}之前,您必须将转换(而不是强制转换)整数转换为字符串}}。您可以使用??
将整数转换为字符串:
ToString
答案 1 :(得分:3)
您可以将其中一个操作数强制转换为[Test]
public void Foo_Should_Do_Something()
{
var deviceIdProvider = A.Fake<IDeviceIdProvider>();
A.CallTo(() => deviceIdProvider.GetDeviceId()).Returns("123456");
var foo = new Foo(deviceIdProvider);
// test the behavior of Foo...
}
:
object
或
return "E" + return "E" + (((object)myNum ?? SQLIndex) ?? "NEW") + STK.ExtraLabel(areaType);
如果你不想要额外的括号。