gpt4 book ai didi

c# - 只有赋值调用自增自减才能作为语句

转载 作者:行者123 更新时间:2023-11-30 19:02:09 24 4
gpt4 key购买 nike

下面这行代码导致了“Only assignment call increment decrement can be used as a statement.”

iRowsEffected == 0 ? trans.Rollback() : trans.Commit();

我多次使用 if else 简写,但从未收到此错误。

最佳答案

I have used the if else shorthand many times but have never received this error.

那我怀疑你之前一直在正确使用它。

条件运算符不仅仅是“if/else”的简写...它是评估表达式的语法 - 表达式的结果是评估第二个或第三个的结果操作数,基于评估第一个操作数的结果。

所有三个操作数都必须是非空的,并且表达式的结果必须在某处使用——例如,就像属性访问一样。

在这里,您只是试图执行一个或另一个 void 方法,所以您想要:

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)();

请不要这样做。为了完整起见,我只是包含了它。

关于c# - 只有赋值调用自增自减才能作为语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17734105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com