以下代碼行會導致以下情況:「只能將分配調用增量減量用作語句」。只能將分配調用增量減量用作語句
iRowsEffected == 0 ? trans.Rollback() : trans.Commit();
我已經使用了if if else許多次,但從未收到此錯誤。
以下代碼行會導致以下情況:「只能將分配調用增量減量用作語句」。只能將分配調用增量減量用作語句
iRowsEffected == 0 ? trans.Rollback() : trans.Commit();
我已經使用了if if else許多次,但從未收到此錯誤。
我已經使用了的if else簡寫很多次,但從來沒有收到此錯誤。
然後我懷疑你在現在之前總是使用它。
條件運算符不僅僅是「if/else」短語......它是用於評估表達式的語法 - 表達式的結果要麼是評估第二個或第三個操作數的結果,基於評估第一個操作數的結果。
所有三個操作數必須是非空的,並且表達式的結果必須在某處使用 - 例如,就像屬性訪問一樣。
在這裏,你只是想執行一個無效的方法或另一種,所以要:
if (iRowsAffected == 0) // Fixed typo in name
{
trans.Rollback();
}
else
{
trans.Commit();
}
如果你真的,真的,真的想使用條件運算符,你可以使用它了方法組轉換:
Action completion = iRowsAffected == 0 ? (Action) trans.Rollback : trans.Commit;
completion();
(你要投的第二個或第三個操作數的一個以提供另一種轉換,但它並不重要,你不需要投在他們倆上。)
或者在一個犯規聲明:
// Don't do this. Please.
(iRowsAffected == 0 ? (Action) trans.Rollback : trans.Commit)();
請不要這樣做,但。我已經只有包括它的完整性。
conditional operator不是if
子句的替代品。它用於根據布爾表達式返回兩個不同的值,並將該值分配給一個變量。但是你的兩種方法都會「返回」void
,並且你在這裏不分配任何東西。
在這裏,你需要一個簡單的if
- else
:
if(iRowsEffected == 0)
trans.Rollback();
else
trans.Commit();
如果'trans'爲空會發生什麼?評估表達式時它會吹嗎?或者在'completion();'語句中? –
@HighCore:評估表達式時。但我必須檢查:) –