问题标签 [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 回答
1472 浏览

c# - MVC 视图模型抛出 NullReferenceException

我正在尝试解决这个问题,但是随着我学习很多这些东西,如果有人能解释我哪里出错和/或一些我可以阅读的好资源,我将不胜感激向上。

因此,我有一个基于我的数据库的实体框架模型的模型和一个表示该模型中属性的视图模型。我已经构建了一个 Kendo 网格来显示数据(在 js 文件中定义),并且控制器中的方法返回一个 Json 结果集。麻烦的是,当我尝试在连接的数据库表中显示一个值时,如果没有设置键值,我会收到一个 nullreferenceexception 错误。显然,我在这里遗漏了部分难题,因为必须有一种编码方式来阻止它的发生。任何帮助将不胜感激!

我的模型是这样的:

我的控制器方法如下所示:

我的视图模型是这样的:

0 投票
3 回答
411 浏览

c# - C# 中的事件触发是否应该始终受到空检查的保护?

这种情况对我来说似乎很有趣。

在 C# 中,您需要在触发事件之前检查类中的事件是否有任何侦听器。

假设 C# 的事件结构是 Observer 可观察模式的非标准实现(意思是微软做到了),以便于使用。

他们为什么不在那个结构中实现这个?这种选择是否有充分的理由或文档。

是否有必要进行空值检查,或者我对在所有情况下都需要空值检查的事件结构的假设是错误的。

这更像是一个好奇的问题,正在寻找微软对这个实现选择的答案。我希望这将导致对委托和事件关键字内部工作的进一步理解。

0 投票
2 回答
339 浏览

javascript - 在 Javascript 中对大型分层对象进行空检查

我们在 javascript 中有一个大的分层对象(可能是最糟糕的遗留设计)。我面临的问题是,每当我想访问对象结构深处的元素时,都需要执行一个空检查列表。

假设我有一个包含客户列表的银行对象,我想获取第一个客户的地址,

这只是一个小例子,我不敢相信仅仅为了访问一个值就需要这么多的空检查。

有更好的解决方法吗?

0 投票
2 回答
87 浏览

java - 如果我对地图进行空检查,为什么应用程序的整体性能会下降?

下面是我的课程,用于CountDownLatch确保在这些地图上发生写入时第一次不会在主要、次要和三级地图上发生读取。

下面是我的后台线程类,它只负责设置所有三个映射(在下面查找 parseResponse 方法)。它每 10 分钟运行一次。

问题陈述:

如果我对我的映射对象以及主要、次要和三次映射进行各种空值或完整性检查,性能会大大降低(不知道为什么)。但是,如果我不做任何健全性或空值检查,性能就会非常好。谁能解释我出了什么问题以及为什么会发生?

下面是一个例子 -

我正在使用ClientData类来获取主线程中的所有映射。正如您在下面看到的,我正在做各种健全性检查以确保、 和mappingsmappings.primary为空。如果它们为空,则记录错误并返回mappings.secondarymappings.tertiary

通过对一级、二级和三级映射的上述健全性和空值检查,应用程序的整体性能(第 95 个百分位)为 4 毫秒。

但是,如果我在没有对主要、次要和三次映射进行任何健全性检查或空值检查的情况下这样做,我会得到 0.87 毫秒的整体性能(第 95 个百分位)。

下面是我的 isEmpty 和 isNotEmpty 方法 -

0 投票
5 回答
25147 浏览

java - How to write a generic isEmpty method which can check for null, empty?

I am writing a utility method which can check for empty and null string, or collection or an object or any general types -

How can I make my above method efficient, since above isEmpty method will be called multiple times from the application which is very performance critical?

I am suspecting below line will be expensive because of heavy toString methods and it will create temporary garbage as well that might cause GC and slow down the performance?

Update:-

I have separated isEmpty method for each type now. Below is what I got after simplifying the above isEmpty method.

Update 2:-

If I need to check for map null or empty, should I keep both collection isEmpty and Map isEmpty method both or Collection isEmpty method will be fine for that?

0 投票
1 回答
115 浏览

java - Java 中的空值检查器

我在一个项目中看到了以下代码行: if (null != policyProDO.getSelected())。我从未在赋值运算符的左侧看到 null 。我宁愿将上面的代码行写成:if (policyProDO.getSelected() != null)。如果有的话,这两个语句之间的真正区别是什么?

0 投票
1 回答
25473 浏览

syntax - 如何 Groovy-ify 空检查?

有没有更“Groovy”的方式来编写这个 Groovy 代码:

逻辑是:

  • 如果System.getProperty("props")是NULL,我想props是NULL;
  • 否则,我想props成为System.getProperty("props")
0 投票
3 回答
592 浏览

c# - 测试父对象是否存在

我在我的项目中使用了大量以不同类导出的数据库数据。例如,我有

问题是这些属性不一定可用。

所以,有可能transaction.Layout是空的,有可能transaction.Layout.Multimedia是空的,等等。

我目前对每个属性都使用它:

我想知道是否有更好的方法可以检查所有父类以确保我需要的属性可用。这些不是我使用的唯一对象,还有其他名称完全不同的对象。

提前致谢

0 投票
1 回答
905 浏览

c# - 检查收益返回是否包含项目

我正在尝试优化一个看起来像这样(简化)的例程:

调用的方法GetBars()看起来像这样

GetBaz()返回 0 到很多项目之间。由于我们运行了几百万个 id,我们最初添加了该if(bars.Any())语句作为加速应用程序的初步尝试。

由于GetBars()等待它阻塞线程,直到它收集了所有数据(这可能需要一些时间)。我的想法是使用 yield return ,然后if(bars.Any())用一个检查来测试我们是否得到至少一个元素,这样我们就可以同时触发另外两个异步方法(这也需要一些时间来执行)。

我的问题是如何做到这一点。我知道System.Linq.Count()System.Linq.Any()击败了收益回报的整个想法,如果我检查可枚举中的第一项,它将从可枚举中删除。

除了添加例如 out 参数之外,还有其他/更好的选择GetBars()吗?

TL;DR:如何检查来自收益返回的可枚举对象是否包含任何对象而不开始迭代它?

0 投票
1 回答
631 浏览

java - eclipse 兼容性中的空值分析在 7 和 8 之间中断

我在带有 Oracle java 8u25 的 Windows 7 64 位上的 Spring 工具套件 3.6.2(Eclipse 克隆)下遇到了 nullcheck 分析的奇怪行为。与java 7源兼容的同一个maven项目在eclipse中成功找到NPE错误,但是当我将maven中的编译版本更改为java 1.8时,eclipse找不到这个错误。

我在 Eclipse 中的 nullcheck 分析配置(Java->Compiler->Errors/Warnings->Null 分析)是: 在 null 分析中包含断言 true 启用基于注释的分析 true NotNull 自定义注释正确设置为 javax.validation.constraints.NotNull 等。 (一切似乎都很好,因为它在 java 7 下工作)

我的 maven pom 在这里http://pastebin.com/pF1yJSG2,如上所述,当 pom 中的 java.version 为 1.7 空检查有效时,1.8 空检查无效。

示例源代码为:

有人知道问题出在哪里以及如何在 jdk 1.8 兼容性下启用 nullcheck 吗?

编辑:Maven 似乎没有参与。在具有相同源代码和编译器兼容级别设置为 1.7 的非 maven 项目上模拟了相同的问题。这是一个错误吗?

EDITED-2:经过更多检查,我发现注释中的以下差异有所不同: java.lang.annotation.ElementType.TYPE_USE ,当注释没有这个时,在Java 8下未检测到nullcheck,但在Java下检测到7. 但是为什么?!为什么会有如此不同的行为?!

EDITED-3:在 MartinLippert 的研究和我的测试之后,似乎 nullcheck API 在 java 7 和 java 8 之间发生了巨大变化。空检测需要(从 Eclipse 库的 2.0 版中看到)java.lang.annotation.ElementType.TYPE_USE, @Target(value={METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER}) 类型在分析中被忽略。所以现在的问题如下:为什么 NULL 分析在 JAVA 8 下需要并且只在新元素类型下工作?(我知道使用 java 8 可以充分利用新的语言功能,但为什么需要破坏兼容性?例如 javax.validation @NotNull 现在无法用作 nullchecking 注释 :-((()