【问题标题】:is there a null conditional operator in Vbnet?Vb Net 中是否有空条件运算符?
【发布时间】:2017-08-02 20:34:11
【问题描述】:

c在 C# 中有一个空条件运算符 ?.(有时称为 Elvis 运算符),如下所示:

var name = project?.customer?.name;

如果projectcustomer 为空,则不会失败,而是返回null

在 VB.NET 中是否有等价物?

请注意,我不是在寻找 If(b, x, y),而是在寻找 ?. 的替代品。

【问题讨论】:

  • 我很惊讶在搜索时没有找到任何答案并且堆栈溢出中没有任何内容。
  • 请再次输入您的 C# 示例,不要出现拼写错误。很难准确说出您的问题是什么(我数了 2 个拼写错误——除了晦涩的“猫王”命名)。
  • @DaveDoknjas 公平地说,“猫王运营商”是运营商还没有正式名称时的常用名称。
  • @DaveDoknjas 是的,在其他语言中,“Elvis 运算符”指的是 ?:,但 C# 从来没有 ?:。当C#获得?.时,非官方使用了同名。

标签: c# vb.net


【解决方案1】:

VB 也有空条件运算符(从未听说过“猫王”运算符):

Dim name = customer?.name

注意事项:

  1. 在 VB 中推断键入需要“Option Infer On”

  2. 我很确定您的原始 C# 代码示例应该是:var name = customer?.name;

【讨论】:

  • 1.我相信Option Infer On 被设置为默认值。 2. 我的一个错字。感谢您的指正。 C# 和 Vbnet 中的语法相同。我的 Schtoopid。
  • @Enigmativity:是的 - 我查的时候看到了,但在今天之前从未听过有人这么称呼它。
  • @DaveDoknjas C# 语言设计团队成员(我相信是 Mads Torgersen)实际上在 null-propagating operator 功能。虽然 wikipedia 页面特别提到 Elvis 运算符是三元条件的,但它还在 See Also 部分中提供了指向安全导航运算符的链接。所以这并不是完全错误的。
猜你喜欢
  • 2018-01-08
  • 2017-01-21
  • 1970-01-01
  • 2013-04-19
  • 2020-02-25
  • 2017-08-25
  • 1970-01-01
相关资源
最近更新 更多