问题标签 [conditional-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
6805 浏览

perl - Perl 三元条件运算符中的赋值问题

我的程序中的这段 Perl 代码给出了错误的结果。

不管value$condition是多少,输出总是3,怎么会?

0 投票
6 回答
22035 浏览

c# - Nullable 条件运算符赋值类型?

我经常发现自己想做这样的事情(因为它EmployeeNumberNullable<int>LINQ-to-SQL dbml 对象的属性,其中列允许 NULL 值)。不幸的是,编译器认为

'null' 和 'int' 之间没有隐式转换

即使这两种类型在对它们自己的可为空的 int 的赋值操作中都是有效的。

据我所知,使用空合并运算符不是一个选项,因为.Text如果字符串不为空,则需要在字符串上进行内联转换。

据我所知,这样做的唯一方法是使用 if 语句和/或分两步分配它。在这种特殊情况下,我发现这非常令人沮丧,因为我想使用对象初始化器语法,而这个赋值将在初始化块中......

有谁知道更优雅的解决方案?

0 投票
5 回答
3695 浏览

c# - if + 可空类型的简写 (C#)

以下返回

无法确定条件表达式的类型,因为 'double' 和 '<null>' 之间没有隐式转换


我不能只使用 aNullableBool 而不是使用 aDouble 往返的原因是因为 aNullableDouble 是生成的 EntityFramework 类的属性,它不能用作 out par。

0 投票
54 回答
50708 浏览

conditional-operator - 三元还是不三元?

我个人是三元运算符的拥护者: () ?: ; 我确实意识到它有它的位置,但我遇到过许多完全反对使用它的程序员,有些程序员使用它过于频繁。

你对此有何感想?你见过什么有趣的代码使用它?

0 投票
3 回答
13119 浏览

c# - 为什么这段代码在 C# 中无效?

以下代码将无法编译:

我得到:错误 1 ​​条件表达式的类型无法确定,因为 'System.DBNull' 和 'string' 之间没有隐式转换

要解决此问题,我必须执行以下操作:

这个演员表似乎毫无意义,因为这当然是合法的:

在我看来,当三元分支是不同类型时,编译器不会将值自动装箱到类型对象......但是当它们是相同类型时,自动装箱是自动的。

在我看来,第一个声明应该是合法的......

谁能描述为什么编译器不允许这样做以及为什么 C# 的设计者选择这样做?我相信这在 Java 中是合法的......虽然我还没有验证这一点。

谢谢。

编辑:我要求了解为什么 Java 和 C# 以不同的方式处理这个问题,C# 中的幕后发生了什么使这无效。我知道如何使用三元,并且不是在寻找一种“更好的方式”来编写示例。我了解 C# 中三进制的规则,但我想知道为什么...

编辑(乔恩斯基特):删除“自动装箱”标签,因为此问题不涉及装箱。

0 投票
6 回答
13984 浏览

c# - 在 C# 中,为什么条件运算符不能隐式转换为可空类型

我很好奇为什么隐式强制转换失败...

以及为什么我必须执行显式转换

在我看来,编译器拥有做出隐式转换决定所需的所有信息,不是吗?

0 投票
6 回答
4888 浏览

ruby - FizzBu​​zz 使用三元条件运算符

我一直在阅读 ruby​​ 中的条件式表达式。然而,我遇到了一个我不太明白定义经典 FizzBu​​zz 问题的问题。我了解 FizzBu​​zz 问题,甚至在使用三元运算符找到以下快速解决方案之前编写了自己的问题。如果有人可以向我解释这个链是如何解决 FizzBu​​zz 问题的,那将非常感激:)

0 投票
4 回答
5517 浏览

c# - 如何使用条件三元运算符在 lambda 之间有条件地分配 Func<>?

通常,使用条件运算符时,语法如下:

没有什么花哨的,很直截了当。

现在,让我们尝试在将 Lambda 分配给 Func 类型时使用它。让我解释:

那是相同的语法,应该可以吗?对?出于某种原因,没有。编译器给出了这个很好的神秘信息:

错误 1 ​​无法确定条件表达式的类型,因为 'lambda 表达式' 和 'lambda 表达式' 之间没有隐式转换

然后我继续并更改了语法,这样它确实起作用了:

我只是好奇为什么它不能以第一种方式工作?

(旁注:我最终不需要此代码,因为我发现在将 int 值与 null 进行比较时,您只需使用 object.Equals)

0 投票
16 回答
69627 浏览

c# - 使用空合并运算符的独特方法

我知道在 C# 中使用空合并运算符的标准方法是设置默认值。

但是还能??用来做什么呢?它似乎不如三元运算符有用,除了更简洁和更易于阅读之外:

因此,鉴于很少有人知道空合并运算符...

  • 你用过??别的吗?

  • ??必要的,或者您应该只使用三元运算符(大多数人都熟悉)

0 投票
5 回答
59765 浏览

c# - ? 的可空类型问题:条件运算符

有人可以解释为什么这在 C#.NET 2.0 中有效:

...但这不是:

后一种形式给了我一个编译错误“条件表达式的类型无法确定,因为 '<null>' 和 'System.DateTime' 之间没有隐式转换。”

不是我不能使用前者,而是第二种风格更符合我的其余代码。