gpt4 book ai didi

c# - 如何在 C# 中执行此 C++ 逗号 + 三元运算符?

转载 作者:行者123 更新时间:2023-11-30 20:50:54 26 4
gpt4 key购买 nike

我最近还在学习 C#,当我试图将这个带有三元运算符的 C++ 逗号运算符转换为 C# 代码时,卡在了文档上:

这是C++代码:

#include <iostream>
using namespace std;

int main() {

bool test1 = false;
bool test2 = true;

cout <<
((test1) ?
"pass me" :
(test1 = true, (test2) ? //Comma inside test condition
((test1) ?
(test1 = false, "get me") : //Comma inside return condition
"pass me") :
"pass me")) << endl;

return 0;
}

但是当我尝试在 C# 中执行此操作时

using System.IO;
using System;

class Program {
static void Main() {
bool test1 = false;
bool test2 = true;

Console.WriteLine( ((test1) ?
"pass me" :
((test1 = true, test2) ?
"get me" :
"pass me")));
}
}

C# 似乎不支持它,所以我想知道如何为它构建代码。

谢谢。

最佳答案

您最好将整个表达式重构为一个单独的函数。

像这样:

private static bool EvaluateTest(ref bool test1, ref bool test)
{
if (test1) {
return "pass me";
} else {
test1 = true;
if (test2) {
if (test1) {
test1 = false;
return "get me";
} else {
return "pass me";
}
} else {
return "pass me";
}
}
}

我认为这是正确的,但我还没有测试过。这个表达式很难理解,所以我可能漏掉了什么地方(而且我已经有一段时间没有编写 C# 代码了),但这至少让我明白了我在说什么。

这里的逻辑甚至没有意义,因为如果我正确阅读原始表达式,test1 在最后一个 if (test1) 中将始终为真测试...如果你像这样写清楚,就会变得很明显。

如果您必须使用像这样的嵌入式三元运算符编写表达式,至少使用适当的缩进,即像嵌套的 if-else block 一样缩进.

关于c# - 如何在 C# 中执行此 C++ 逗号 + 三元运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22178684/

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