以這種方式,您不能在三元表達式中使用返回類型爲void
的方法。故事結局。
要明白這是爲什麼,還記得那些三元運營商實際上確實 - 它評估以下幾點:
(condition ? [true value] : [false value])
它所意味的是,下面的代碼:
int x = a ? b : c;
必須重寫爲:
int x;
if (a)
{
x = b;
}
else
{
x = c;
}
以上兩者在邏輯上是相同的。
那麼如何使用void
作爲其返回類型的方法工作?
// Does this make sense?
int x = condition ? foo(s) : foo(i);
// Or this?
if (condition)
{
x = foo(s);
}
else
{
x = foo(i);
}
顯然,上述內容不合法。
也就是說,如果只有您的foo
重載返回值,其他人的建議將會有效。
換句話說,如果你的簽名是這樣的:
object foo(string s);
object foo(int i);
然後你可以做這個(你把自己的返回值,但至少它會編譯):
object o = condition ? foo(0) : foo("");
無論如何,ol'if
/else
是你最好的選擇,在這種情況下。
第一個選項是最好的。編譯器會爲你做檢查,不需要做一個需要一個對象的方法......還有一些額外的代碼,不需要任何東西 – Stefanvds 2010-08-24 14:36:25