问题标签 [null-propagation-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 投票
1 回答
108 浏览

c# - Xamarin Studio c# null 传播运算符

在填写有关 Xamarin Studio 的错误案例之前,我想询问您的意见

考虑到这个简单的场景

不应该像在 Visual Studio 2015+ 上的 c#-6.0 中那样aProp将其推断为实例吗?int?因为实际上不是,所以被推断为平原int

Xamarin Studio 没有抱怨运算符,但它没有识别aProp为可空类型,因此抱怨.HasValue属性评估;不仅是 Intellisense,而且在编译时更糟糕的是

我错过了什么还是只是我的 IDE?

编辑:实际上我刚刚发现我可以在空合并检查中使用它,即使推断的类型实际上是int!什么混合!XD

0 投票
2 回答
872 浏览

c# - 空值传播 - 在空值检查时执行函数

这可以使用 Null 传播运算符 (??) 来实现吗?

0 投票
2 回答
111 浏览

c# - 空值传播 - 第二次空值检查

我想在theme.VersionStamp 上插入另一个空检查。有没有办法可以将它插入到 SequenceEqual 参数中?

0 投票
4 回答
63746 浏览

c# - 表达式树 lambda 可能不包含空传播运算符

以下代码中的行price = co?.price ?? 0,给了我上述错误,但如果我从中删除?co.?工作正常。

我试图按照他们在网上使用的这个 MSDN 示例所以,我似乎需要了解何时使用和何时不使用。?select new { person.FirstName, PetName = subpet?.Name ?? String.Empty };???

错误

表达式树 lambda 可能不包含空传播运算符

0 投票
2 回答
2969 浏览

c# - 无法分配条件访问表达式 - C# null-propagation += events

我最喜欢的 C# 特性之一是 CS6 中的“空传播”。

这为我们许多人清理了很多代码。

我遇到了一种情况,这似乎是不可能的。我不知道为什么我认为空传播只是一些编译器魔术,它为我们做一些空检查,使我们能够维护更干净的代码。

在挂钩事件的情况下..

编译输出显示:

Resharper 投诉

所以,我的问题是——我对空传播有什么误解?为什么这不是允许的语法?

0 投票
3 回答
760 浏览

c# - Null propagation operator, out parameters and false compiler errors?

Let's assume I have a class that has a property of type Dictionary<string,string>, that may be null.

This compiles but the call to TryGetValue() could throw at a NullRef exception at runtime:

So I'm adding a null-propagating operator to guard against nulls, but this doesn't compile:

Is there an actual use case where val will be uninitialized inside the if block, or can the compiler simply not infer this (and why) ?

Update: The cleanest (?) way to workaround^H^H^H^H^H fix this is:

0 投票
1 回答
193 浏览

c# - 使用 Null 传播时出现 NullReferenceException

我正在使用.NET Core 2.1.200 开发ASP.NET Core MVC应用程序。

我有一个响应模型和一个静态方法来从实体模型构建这个响应模型。

尽管我使用空传播,但会引发 NullReferenceException。

做一个传统的空检查解决了这个问题:

我错过了什么吗?这是一个错误吗?

0 投票
1 回答
222 浏览

c# - 副作用、短路和空值传播方法调用运算符 (?.)

当条件成员访问/空传播运算符中的目标对象为空,并且该成员是一个方法时,是否评估该方法的参数?

也就是说,在下面的代码中,g()调用的是?

怎么样h()

SharpLab 将参数评估放在if块内,因此将被跳过。但这是否由规范或实现细节保证?

0 投票
0 回答
36 浏览

c# - if条件语句中的C#空传播运算符

假设我想写一些类似的东西:

它给出了编译错误:Local variable 'result' migth not be initialized before accessing

我想知道为什么 c# 编译器在这种情况下不确定控制流。

我们都知道,大多数时候 c# 编译器在看到常量值时表现得“聪明”。

0 投票
1 回答
324 浏览

c# - 编译器错误地指示使用未分配的局部变量错误

鉴于此代码:

c# 编译器发出:

但显然无法引用操作员myValue何时TryGetValue()跳过调用?.。这是因为结果null被转换为falseby ?? false

换句话说,如果myDictnull?.操作员将跳过对 的调用TryGetValue(),保持myValue未分配状态。我明白了。

但是,??操作员将始终评估空传播到false,在这种情况下防止进入 if 块。

这在编译时很明显,那么为什么会出现错误?

我怀疑这可能与所有这些语法糖最终如何解开到实际的 .NET p 代码中有关,但出错似乎仍然是错误的......

不使用.?运算符时,我没有收到任何错误,这是预期的:

只是当我使用.?with时?? false