问题标签 [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.
c# - Xamarin Studio c# null 传播运算符
在填写有关 Xamarin Studio 的错误案例之前,我想询问您的意见
考虑到这个简单的场景
不应该像在 Visual Studio 2015+ 上的 c#-6.0 中那样aProp
将其推断为实例吗?int?
因为实际上不是,所以被推断为平原int
。
Xamarin Studio 没有抱怨运算符,但它没有识别aProp
为可空类型,因此抱怨.HasValue
属性评估;不仅是 Intellisense,而且在编译时更糟糕的是
我错过了什么还是只是我的 IDE?
编辑:实际上我刚刚发现我可以在空合并检查中使用它,即使推断的类型实际上是int
!什么混合!XD
c# - 空值传播 - 在空值检查时执行函数
这可以使用 Null 传播运算符 (??) 来实现吗?
c# - 空值传播 - 第二次空值检查
我想在theme.VersionStamp 上插入另一个空检查。有没有办法可以将它插入到 SequenceEqual 参数中?
c# - 表达式树 lambda 可能不包含空传播运算符
以下代码中的行price = co?.price ?? 0,
给了我上述错误,但如果我从中删除?
它co.?
工作正常。
我试图按照他们在网上使用的这个 MSDN 示例所以,我似乎需要了解何时使用和何时不使用。?
select new { person.FirstName, PetName = subpet?.Name ?? String.Empty };
?
??
错误:
表达式树 lambda 可能不包含空传播运算符
c# - 无法分配条件访问表达式 - C# null-propagation += events
我最喜欢的 C# 特性之一是 CS6 中的“空传播”。
这为我们许多人清理了很多代码。
我遇到了一种情况,这似乎是不可能的。我不知道为什么我认为空传播只是一些编译器魔术,它为我们做一些空检查,使我们能够维护更干净的代码。
在挂钩事件的情况下..
编译输出显示:
所以,我的问题是——我对空传播有什么误解?为什么这不是允许的语法?
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:
c# - 使用 Null 传播时出现 NullReferenceException
我正在使用.NET Core 2.1.200 开发ASP.NET Core MVC应用程序。
我有一个响应模型和一个静态方法来从实体模型构建这个响应模型。
尽管我使用空传播,但会引发 NullReferenceException。
做一个传统的空检查解决了这个问题:
我错过了什么吗?这是一个错误吗?
c# - 副作用、短路和空值传播方法调用运算符 (?.)
当条件成员访问/空传播运算符中的目标对象为空,并且该成员是一个方法时,是否评估该方法的参数?
也就是说,在下面的代码中,g()
调用的是?
怎么样h()
:
SharpLab 将参数评估放在if
块内,因此将被跳过。但这是否由规范或实现细节保证?
c# - if条件语句中的C#空传播运算符
假设我想写一些类似的东西:
它给出了编译错误:Local variable 'result' migth not be initialized before accessing
我想知道为什么 c# 编译器在这种情况下不确定控制流。
我们都知道,大多数时候 c# 编译器在看到常量值时表现得“聪明”。
c# - 编译器错误地指示使用未分配的局部变量错误
鉴于此代码:
c# 编译器发出:
但显然无法引用操作员myValue
何时TryGetValue()
跳过调用?.
。这是因为结果null
被转换为false
by ?? false
。
换句话说,如果myDict
是null
,?.
操作员将跳过对 的调用TryGetValue()
,保持myValue
未分配状态。我明白了。
但是,??
操作员将始终评估空传播到false
,在这种情况下防止进入 if 块。
这在编译时很明显,那么为什么会出现错误?
我怀疑这可能与所有这些语法糖最终如何解开到实际的 .NET p 代码中有关,但出错似乎仍然是错误的......
不使用.?
运算符时,我没有收到任何错误,这是预期的:
只是当我使用.?
with时?? false
。