草庐IT

c# - 如何将 if、else if 逻辑转换为三元运算符?

我只是想知道这是否可行,因为我开始使用三元运算符来减少代码行数并且我很喜欢它。if(x==y){z+=x;}elseif(x==z){z+=y;}else{z+=1;}如果只有一个这样的if语句,我现在可以这样做:z=x==y?z+=x:z+=1; 最佳答案 应该是这样的:z=x==y?z+x:x==z?z+y:z+1;如果您使用z+=x作为操作数,它最终会执行z=(z+=x)。虽然它在这种特殊情况下有效,但由于表达式z+=x的结果是z的最终值,它在其他情况下可能无效。但是,由于所有操作都有共同的z+=,您可以这样做:z+=x==y

c# - x64 平台上调试器中奇怪的三元运算符行为

我在我的C#代码中使用了一个非常简单的三元表达式:helperClass.SomeData=helperClass.HasData?GetSomeData():GetSomeOtherData();在这两种情况下,表达式的每个路径上的函数都返回一个非空对象,但如果我在调试器中查看结果,它是空的,直到我在代码中引用它,例如使用断言:Debug.Assert(helperClass.SomeData!=null);只有在Debug模式下使用“x64”或“任何CPU”平台设置时才会出现这种情况。在“x86”模式下没问题。在假设我在编译器或调试器中发现错误之前,我尽量保持谨慎,但我找不到对此行

c# - 三元运算符语法来选择接口(interface)的实现

这个问题在这里已经有了答案:Implicitconversionissueinaternarycondition[duplicate](4个答案)关闭8年前。我想知道为什么这行代码不能编译:ILogStuffLogger=(_logMode)?newLogToDisc():newLogToConsole();注意LogToDisc和LogToConsole都实现了ILogStuff,_logMode是一个bool变量。我收到的错误消息是:Error3:Typeofconditionalexpressioncannotbedeterminedbecausethereisnoimplici

c# - 一个可以分解三元表达式的工具

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。似乎与我一起工作的当前项目的前开发人员决定创建一些有效但难以管理的代码。在整个代码中,我发现了多条件三元表达式。翻译和重写/重构它们越来越让人头疼。有谁知道可以分解三元表达式的免费工具(独立工具或作为VS2008的插件)?这个项目没有CodeRush的预算。如果需要,我会继续重新编码,但我试着在这里抱有一点希望。这是问题的一个例子:sNoteType=o

c# - 使用三元运算符进行多项操作

如何使用三元?:执行多个操作的条件,如果表达式为真/假?wbsource=(exp)?(做一件事):(做第二件事)wbsource=(exp)?(做一件事)(做第二件事):(做第二件事)例如:为什么我不能在之间执行三个操作?和:filename=(fp!=null)?fp;Properties.Settings.Default.filename=fp;Properties.Settings.Default.Save;:Properties.Settings.Default.file;对于简单的if条件,我会以如下简单的方式编写:if(fp!null){filename=fp;Prope

c# - 使用三元运算符 : "only assignment, call, increment..."

我将Action字典定义为:varactions=newDictionary>();我把这样的Action放在那里:actions.Add("default",(value,key)=>result.Compare(value,properties[key],Comparers.SomeComparer,key));...我正在使用这段代码来运行它:if(actions.ContainsKey(pair.Key)){actions[pair.Key](pair.Value,pair.Key);}else{actions[""](pair.Value,pair.Key);}它工作得很好,

javascript - jsx 三元运算符中的多个条件

黑色是默认颜色,但如果我想添加第三个条件怎么办?状态可以是“已批准”、“已拒绝”、“待定”或更多。 最佳答案 您可以执行以下操作:这意味着如果status==='approved'设置背景色为蓝色,如果status==='pending'设置为黑色,否则设置红色。 关于javascript-jsx三元运算符中的多个条件,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4640898

javascript - 使用三元表达式渲染组件

我去使用三元表达式渲染一个组件。目前我正在做这样的事情{this.state.loaded?():(Loading..)}但这不起作用,并抛出一个错误提示InvariantViolationExceptionsManager.js:84UnhandledJSException:InvariantViolation:InvariantViolation:Textstringsmustberenderedwithinacomponent.[问题:]如何修复它并在三元表达式中渲染整个组件Ps:据此stackoverflowquestion:当我们进行内联条件渲染时会发生这种情况。

Javascript 三元运算符左值

我正在阅读不同语言的三元运算符,并注意到Javascript部分中的一些有趣内容。http://en.wikipedia.org/wiki/%3F:#JavaScriptTheconditionaloperatorinJavaScripthasthesamesyntaxandprecedencestructureasintheotherBCPL-derivedvariants,butasignificantdifferenceexistsinthesemantics:itreturnsanl-value.第一句话指出javascript中三元组的返回是一个左值,所以我尝试了一些示例,结

javascript - 三元运算符在 JSHint 中显示错误 - 需要赋值或函数调用,但看到的是表达式

我有一个三元运算符dir==='next'?++$currentSlide:--$currentSlide;在我的JS中用来递增或递减一个整数。当我在grunt中运行脚本时,JSHint将这一行突出显示为Expectedanassignmentorfunctioncallandinsteadsawanexpression.谁能告诉我哪里出了问题?我应该以不同的方式设置我的条件吗? 最佳答案 您将条件运算符误用为if语句,这就是您收到该注释的原因。代码中的实际工作是作为表达式的副作用完成的,表达式的结果将被忽略。作为一个真正的if语句