最近我遇到了一个奇怪的错误,我的代码中我将一个int?
与一个字符串连接起来,然后又在此之后添加了另一个字符串。
我的代码基本上等同于这个:
int? x=10;
string s = "foo" + x ?? 0 + "bar";
惊人的是,这段代码将会运行和编译,而不会出现警告或不兼容类型错误。以下代码同样如此:
int? x=10;
string s = "foo" + x ?? "0" + "bar";
然后这会导致一个意外的类型不兼容错误:
int? x=10;
string s = "foo" + x ?? 0 + 12;
这个更简单的例子也会:
int? x=10;
string s = "foo" + x ?? 0;
有人能向我解释一下这是如何工作的吗?