问题标签 [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.
templates - 播放 2.x 空安全合并(避免模板中的 NPE)
在 Play 1.x 中,您可以执行诸如&{task?.server?.name}
打印服务器名称(如果存在)或不打印任何内容(如果task
或task.server
为空)之类的操作。如何在 2.x scala 模板中获得相同的结果?
我发现了一些关于使用 Scala 执行此操作的问题:
但这些解决方案要么相当冗长,要么需要定义您自己的运算符。Play 是否提供了一种快速的方法来做到这一点?或者如果我需要自己定义运算符,我应该把它放在哪里以便 Play 找到它?(此时我对 Scala 几乎一无所知,尽管我正在努力学习)
c# - c#空字符串?
我有以下内容:
这返回Tom Jones
就好了。
如果 name.First 可能为 null 或 name.Last 可能为 null,我有以下内容:
奇怪的是它只返回Tom
。为什么会这样,我该如何修复它,if null
使其默认为空字符串的名字或姓氏?
c# - 了解空合并运算符 (??)
我有一个WebControl
实现.Value
返回 Nullable<decimal> 的 getter/setter的自定义
这是一个客户端过滤的文本框(TextBox
包含 javascript 和一些用于设置/获取值的服务器端逻辑的子类)
这是该控件的 getter 和 setter:
我看到的问题是该语句的输出:
uxAmount.Value
当返回 10000时,我看到金额设置为“0” 。
这按我的预期工作(请原谅外壳的变化):
当调用在 Linq2Sql 数据上下文中定义的 UDF 函数以及空合并运算符时,我也看到了这种行为(最近),也就是说,我知道我的 UDF 调用返回了预期值,但我得到的是 RHS 值。
让我更加困惑的是,如果我在手表中评估 uxAmount.Value,我会得到 10000 的类型Nullable<decimal>
。
以下是我尝试过的一些表达方式:
然后我在上面 4 之后添加了这个表达式
现在
似乎最后一次调用总是 0,但是(根据上面的 getter/setter 使用 auxAmount.Value
解析出来的值是稳定的。我在断点处停止,没有其他线程可以操纵这个值。.Text
TryParse
请注意使用 M 后缀将常量强制为十进制,因为它是整数,我怀疑存在类型转换问题。
有任何想法吗?
LHS 和 RHS 的值似乎都是稳定且已知的。
--edit-- 一些来自 VS2010 的屏幕截图
c# - 在 C# 中是否可以重载 `??` 运算符?
我阅读了有关运算符重载的MSDN 文档。
在该示例中,使用的运算符是+
,-
也可以定义其他运算符*
或/
。
我想重载??
运算符以用于字符串,例如
代替
我不想将字符串转换为对象并使用??
.
我知道它??
用于可空值类型,MSDN 说:
这 ??运算符称为空值合并运算符,用于为可空值类型或引用类型定义默认值。
如果操作数不为空,则返回左侧操作数;否则返回正确的操作数。
我想问你是否可以在 C# 中重载这个运算符。上面的例子是需要使用时的简单情况??
。
asp.net - 在多个模块上保持(http)上下文
我有一个带有静态函数的类,需要使用当前的HttpContext
. 我没有在每次使用这些函数时都发送对象,而是尝试了一种不同的方法。我建立了这样一个属性:
在我http
用作我的HttpContext
.
它似乎不稳定的东西。这有什么问题吗?
更新: 我发现这很好用
请解释
c# - 空合并运算符
我有以下代码:
由于两者a
和b
都已填写,我希望c
给我4的结果。
但是,我得到的结果是2,在这种情况下b
被视为1而不是2。
有谁知道这种行为背后的原因是什么?
c# - C# ??空合并运算符 LINQ
当我使用 LINQ 将 XML 文件解析为自定义对象时,我试图防止出现 NULL 值。
我在Scott Gu 的博客上找到了一个很好的解决方案,但由于某种原因,它不适用于我的整数。我想我使用了相同的语法,但似乎我遗漏了一些东西。哦,由于某种原因,它在节点不为空时起作用。
下面是我的代码的摘录。
错误消息是:
输入字符串的格式不正确。
如果有人知道我做错了什么,请帮忙:)
编辑:一段 XML(奇怪的名字,但不是自愿选择的)
c# - “如果”条件比 ?? 和铸造
对于相同的功能,我有以下两种方法 - 一种带有“if”条件,一种带有“?? 和铸造”。哪种方法更好?为什么?
代码:
更新
根据答案,以下是 ??
- 提高可读性
- 减少程序流的分支深度(降低圈复杂度)
注意:作为对象的铸造成本可以忽略不计。
参考