问题标签 [null-check]

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 回答
1332 浏览

java - Java 8 使用 Optional 避免空指针检查

是否可以编写这样的内容并避免检查元素是否为空且集合是否为空:

我发现了类似的东西 http://winterbe.com/posts/2015/03/15/avoid-null-checks-in-java/

基本上,我想要实现的是避免具有多个检查天气对象的语句为空或层次结构中的集合为空。我在上面的帖子中读到,这可以通过可选的“在后台自动处理空检查”来实现。

如果已经有一些解决方案,抱歉重复,请参考。

0 投票
2 回答
123 浏览

c# - 带有空值检查的 C# 重复代码

我正在使用 RPC(protobuf-remote),我需要做一些检查以防另一端(服务器)关闭。假设我有很多 RPC 方法,例如:

有没有办法改变这个重复的空检查代码?所以我可以写这样的东西:

如果 RPC 服务器关闭,它将进行空值检查并按其类型创建对象,因此我将获得所需对象的默认值。

0 投票
1 回答
621 浏览

c# - C# JIT 编译器是否优化空检查?

网上有很多文章列出了 C# JIT 在执行一段代码之前所做的优化。例如,MSDN 上的这篇文章谈到:

常量折叠、常量和复制传播、公共子表达式消除、循环不变量的代码运动、死存储和死代码消除、寄存器分配、方法内联、循环展开(带有小主体的小循环)。

我的问题是:JIT 编译器是否也处理无用的空检查?我找不到任何处理这个问题的来源。

在同一篇文章中,我读到:

由于 C# 语言规范确保对空对象引用的任何调用都会引发 NullReferenceException,因此每个调用站点都必须确保实例不为空。这是通过取消引用实例引用来完成的;如果它为空,它将生成一个错误,该错误会变成此异常。

所以,假设我写了一段这样的代码:

再次调用第二person.Name次空检查,这显然是无用的,编译器可以将其删除。或不?

我读到在 Java 中这已经完成(这里这里这里的许多来源之间的一些来源)。

如果 C# 也这样做,您是否知道一些关于此的源或文档?

如果相反,C# 不这样做,你知道为什么吗?在 Java JIT 没有遇到的 .NET 环境中实现这样的功能是否存在内在困难?

0 投票
1 回答
484 浏览

java - 在检查Java中的字符串是否为空时,如果 (str == null ) 不正确,那么为什么 (str != null && !str.isEmpty()) 被认为是正确的

有很多答案和博客说在 Java 中检查 null 或空字符串的正确方法如下

但是后来很多答案说

是检查字符串空值的错误方法,因为在此检查中,我们查看两个对象是否占用内存中的相同空间。我理解这个声明,但如果是这种情况,那么即使使用 != 完成的检查也不应该是检查 null 与否的正确方法。请帮助我理解这种情况。

0 投票
3 回答
2503 浏览

c# - C#,多个 == 运算符重载,没有模棱两可的空值检查

简介
我有几个类做同样的工作,但具有不同的值类型(例如浮点数或整数向量)。
现在我希望能够检查相等性,这种相等性也应该在类型之间起作用(例如vectorF == vectorI)。
此外,应该可以进行空检查(vectorF == null)。

方法
我的方法是为 == 和 != 运算符创建多个重载,每个可能的组合一个。

问题
使用多个重载,我不能只使用 == 运算符进行空检查,因为调用会模棱两可。

我知道可以使用 ReferenceEquals 或 null 强制转换,但这种方法对我来说是一个严重的限制。

问题
有没有办法以某种方式实现 == 运算符,它允许简单的 null 检查,并允许在不同向量之间进行相等检查?

或者,还有另一种方法我可以/应该如何实现这个?

0 投票
2 回答
97 浏览

sql-server - 根据 SQL 中的空列插入错误消息列

我在下面创建了一个表。

当我对表进行选择时,我希望 ERRORMESSAGE 列的预期结果如下。

我需要获得第一条记录:

我需要获得第二条记录:

我需要获得第三条记录:

我需要获得第四条记录:

任何帮助表示赞赏。

谢谢。

0 投票
1 回答
452 浏览

java - 用 Optional#ifPresent 替换空检查的好处

我刚刚从 Java 7 迁移到 8,我的代码中到处都是像这样的代码片段

我注意到空检查有时被认为是一种反模式,Java 8 促进了 Optional 的使用。让我的代码看起来像有什么好处吗

可以说,它使代码更难阅读。

0 投票
1 回答
565 浏览

c++ - 使用不带空检查的 dynamic_cast

dynamic_cast不检查返回值时有什么用途NULL吗?如果我正在查看一个代码库,并且它从返回值中省略了 null 检查,那么使用它是否也一样好static_cast

我已经阅读了谷歌提供的关于此事的所有内容,似乎检查 null 是唯一的原因,但我还没有看到有人站出来说“没有 null 检查的 dynamic_cast 是浪费周期(和RTTI 代码可能会膨胀)。”

编辑:有人告诉我,如果类型之间存在虚拟继承,那么在没有的static_cast地方dynamic_cast就会失败。在我的情况下,情况并非如此。

0 投票
4 回答
4724 浏览

c# - 方法调用中的 C# null 检查链

我想下面的方法调用链。

如果方法调用深度越深,空值检查就会越重叠。有什么好的解决方案吗?

修改的

我更改了示例代码。将 CreateA 更改为构造函数无法解决我的问题。问题只是不必要的空检查链接重叠。

0 投票
4 回答
1865 浏览

java - 在现有 Java 7 代码中使用 Java 8 Optional

我有一个任务,我需要将以下 Java 8 之前的代码转换为 Java 8 代码。以下只是一种让我很难完成的方法:

我想通过使用Optional<T>而不修改以前创建的类和接口来删除空检查。

我尝试通过更改方法返回类型并执行以下操作开始,但编译器抛出此错误:
Bad return type in method reference因为 VehicleMake 类没有可选的实例字段。
以下是我的代码尝试:

编辑:通过不将参数传递给方法引用来删除flatMap和更正的代码。但现在它不让我region.name()通过getVehicleMakesByRegion()

编辑:将消费者传递给ifPresent()