问题标签 [null-coalescing-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.
c# - 检查空值的函数结果
在回答这个问题时,BlackBear 建议替换
和
如果是一个字符串值,这很好Session["key"]
用,但是如果我想对一个对象执行此操作呢?例如,我可以这样做:
但是,如果我不想评估GetMyObject()
两次怎么办?我唯一的选择是将结果存储在变量中,然后检查该变量是否为空吗?
编辑:这都是理论上的——我以前遇到过,但我现在没有一个具体的例子。话虽如此,这是一个示例类。
如果我这样做string y = (GetMyObject() ?? "none").ToString();
,我会得到
操作员 '??' 不能应用于“MyObject”和“string”类型的操作数”。
理想情况下,我可以做到
即使 GetMyObject() 为空,它也能正常工作。基本上空合并运算符充当自包含的try {} catch (NullReferenceException) {}
. 我知道我不能,但那将是理想的。
c# - C# 合并运算符抛出
我有一个带有字符串属性的类。我在读取它时使用了合并运算符,因为它可能为空,但它仍然给我一个 NullRefrenceExeption。
更具体地说,它的“.ParentSection”是空的,是不是因为它甚至没有“.name”?如果是这种情况,我应该先用 if 块测试“.ParentSection”吗?
我认为 Coalesce 运算符有一些我不明白的地方,希望有人能解释一下这里出了什么问题。
c# - 在可空类型上使用合并空运算符会更改隐式类型
我希望接下来的三行代码是相同的:
在所有情况下,我都分配nullableDateTime
给新变量。我希望所有变量的类型都成为DateTime?
,因为那是nullableDateTime
. 但令我惊讶的是,dateTimeWhatType
just 的类型变成了DateTime
,所以不能为空。
更糟糕的是,ReSharper 建议用空合并表达式替换第二个语句,将其转换为表达式 3。因此,如果我让 ReSharper 做它的事情,变量的类型将从DateTime?
变为DateTime
。
事实上,假设在该方法的其余部分,我会使用
这可以编译得很好,直到我让 ReSharper 用空合并版本替换第二个表达式。
AFAIK,替换
和
确实应该产生相同的结果。但是对于可空类型的隐式类型,编译器似乎威胁??
到了它的意思。
所以我想我的问题是为什么在我使用时隐式类型会发生变化??
,以及在文档中我可以找到有关此信息的位置。
顺便说一句,这不是真实世界的场景,但我想知道为什么使用??
更改(隐式)类型。
c# - c#这条线是什么意思?
有人可以解释一下下面的代码return total ?? decimal.Zero
吗?
是以下的意思吗?
javascript - 如何在 JavaScript/CoffeeScript 中合并数组?
合并一组静态项目很容易:
但是有没有一种简单的方法来合并一个未知长度的数组?我能想到的最简单的是这个(CoffeeScript):
这对于简单的列表很好,但是
- 理想情况下
coalesce
应该迭代arguments
,但它不支持reduce
,并且 - 如果数组包含函数,您可能希望返回它们的返回值而不是函数本身(这是我的用例)。
基于 Guffa 的解决方案,这里有一个 CoffeeScript 版本:
测试coffee
:
印刷
c# - C# 中的空合并运算符 (??) 是线程安全的吗?
以下代码中是否存在可能导致NullReferenceException
?
- 或者 -
Callback
在 null 合并运算符检查 null 值之后但在调用函数之前,是否可以将变量设置为 null?
编辑
这是一个出于好奇而提出的问题。我通常不会这样编码。
我不担心Callback
变量变得陈旧。我担心Exception
被扔掉DoCallback
。
编辑#2
这是我的课:
该方法DoCallbackIfElse
有一个竞争条件,可能会抛出一个NullReferenceException
. 该DoCallbackCoalesce
方法是否具有相同的条件?
这是 IL 输出:
在我看来,call UserQuery+MyClass.get_Callback
在使用运算符时只被调用一次??
,但在使用if...else
. 难道我做错了什么?
powershell - Powershell中的空值合并
powershell中是否有空合并运算符?
我希望能够在 powershell 中执行这些 c# 命令:
javascript - javascript空条件表达式
可能重复:
javascript 的空合并运算符?
在 C# 中,您可以这样做:
那就是 assign newObject
to obj
if not null else assign defaultObject
。我如何用javascript写这个?
scala - 是否可以在不使用反射的 Scala 中实现 `??`(来自 C# 的空合并运算符)?
我在某处找到了 C# 空合并运算符'??'的实现:
然后可以像a ?? b
which mean一样使用它if (a == null) b else a
。
在反编译类文件后,我看到它生成了带有反射的代码(在 Scala 2.8.1 中)。
为什么它会产生反射,是否可以修改该代码使其不会产生反射?
c# - 合并可能为空的 LINQ 查询结果
我使用 Linq 从 4 个级联下拉菜单中返回 ID。
用户可能已经从 1 个或所有菜单中选择了 1 个或多个值。然后从用户的选择中查询代表 ID 的 DataTable 的文本列。
如果用户从第 4 个(也是最低级别)下拉列表中进行选择,那么他们会从上述所有下拉列表中进行选择。
如果用户从菜单 1 中选择“X”,从菜单 2 中选择“Y”,而在其他人中没有任何内容,我希望results1
在 [Col_1] 中存在“X”的 10 行中看到,然后会向下查询说results2
[Col_2] 中存在“Y”的5 行。
编辑 代码(基本形式)
results4
取决于results3
、results3
onresults2
和results2
on的结果results1
。
可能results4 - 2
是空的,因此我想知道是否可以将它们合并为最终变量,例如:
这是抛出错误:
有没有人有任何狡猾的想法如何解决这个问题?我尽量不写冗长的代码,处理所有可能的结果。
提前谢谢大家(希望这个问题是有道理的!)
厘米