Questions tagged «null»

空取决于上下文,表示“无”或“未知”。对于特定于SQL的问题,请使用“ sql-null”标签。

16
深空检查,有没有更好的方法?
注意:这个问题是在引进之前问了.?用C#操作6 /的Visual Studio 2015年。 我们都去过那里,我们有一些很深的属性,例如cake.frosting.berries.loader,我们需要检查它是否为null,所以也不例外。要做的方法是使用短路if语句 if (cake != null && cake.frosting != null && cake.frosting.berries != null) ... 这并不十分优雅,也许应该有一种更简单的方法来检查整个链,看看它是否与空变量/属性相抵触。 是否可以使用某些扩展方法,或者它是语言功能,还是一个坏主意?
129 c#  null 


24
返回无效的不良设计吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我听到一些声音说,从方法中检查返回的空值是错误的设计。我想听到一些原因。 伪代码: variable x = object.method() if (x is null) do something
127 oop  null  return-value 

4
为什么String.valueOf(null)抛出NullPointerException?
根据文档,该方法String.valueOf(Object obj)返回: 如果参数是null,则字符串等于"null"; 否则,obj.toString()返回的值。 但是,当我尝试这样做时,怎么会这样: System.out.println("String.valueOf(null) = " + String.valueOf(null)); 它会抛出NPE吗?(如果您不相信,请自己尝试!) 线程“主”中的异常java.lang.NullPointerException 在java.lang.String。(未知来源) 在java.lang.String.valueOf(未知来源) 怎么会这样呢?文件在骗我吗?这是Java中的主要错误吗?




10
检查空值的正确方法是什么?
我喜欢null-coalescing运算符,因为它使为可为null的类型分配默认值变得容易。 int y = x ?? -1; 很好,除非我需要使用做一些简单的事情x。例如,如果我想检查Session,那么我通常最终不得不写一些更冗长的东西。 我希望我可以这样做: string y = Session["key"].ToString() ?? "none"; 但是您不能,因为在.ToString()null检查之前调用gets,所以如果Session["key"]为null 则失败。我最终这样做: string y = Session["key"] == null ? "none" : Session["key"].ToString(); 我认为,此方法行之有效,并且比三行方法更好: string y = "none"; if (Session["key"] != null) y = Session["key"].ToString(); 即使这样行​​得通,但我仍然好奇是否有更好的方法。似乎我总是必须Session["key"]两次引用。一次检查,再一次分配。有任何想法吗?

10
json_encode返回NULL?
由于某种原因,“说明”项将返回NULL以下代码: <?php include('db.php'); $result = mysql_query('SELECT * FROM `staff` ORDER BY `id` DESC LIMIT 2') or die(mysql_error()); $rows = array(); while($row = mysql_fetch_assoc($result)){ $rows[] = $row; } echo json_encode($rows); ?> 这是我的数据库的架构: CREATE TABLE `staff` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` longtext COLLATE utf8_unicode_ci, `description` longtext COLLATE utf8_unicode_ci, `icon` longtext …
119 php  null  json 



3
为什么此字符串扩展方法不引发异常?
我有一个C#字符串扩展方法,该方法应返回IEnumerable<int>字符串中子字符串的所有索引中的一个。它可以完美地实现其预期目的,并且可以返回预期的结果(由我的一个测试证明,虽然不是以下测试),但是另一个单元测试发现了一个问题:它无法处理空参数。 这是我正在测试的扩展方法: public static IEnumerable<int> AllIndexesOf(this string str, string searchText) { if (searchText == null) { throw new ArgumentNullException("searchText"); } for (int index = 0; ; index += searchText.Length) { index = str.IndexOf(searchText, index); if (index == -1) break; yield return index; } } 这是检测出该问题的测试: [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void Extensions_AllIndexesOf_HandlesNullArguments() …

7
重新定义NULL
我正在为地址0x0000有效且包含端口I / O的系统编写C代码。因此,访问NULL指针的任何可能的错误都将保持未被检测到的状态,同时会导致危险的行为。 出于这个原因,我希望将NULL重新定义为另一个地址,例如无效的地址。如果我不小心访问了这样的地址,我将得到一个硬件中断,可以处理该错误。我恰好可以访问此编译器的stddef.h,因此实际上可以更改标准标头并重新定义NULL。 我的问题是:这会与C标准冲突吗?据我从标准7.17可以看出,该宏是实现定义的。标准中是否有其他地方声明NULL 必须为0? 另一个问题是,无论数据类型如何,大量编译器都将所有内容都设置为零,从而执行静态初始化。即使该标准规定编译器应将整数设置为零,并将指针设置为NULL。如果我为编译器重新定义NULL,那么我知道这种静态初始化将失败。即使我大胆地手动更改了编译器标头,我也可以认为这是不正确的编译器行为吗?因为我可以肯定地知道该特定的编译器在执行静态初始化时不会访问NULL宏。
118 c  null 

4
SQL Server中“ Null”值的大小
我有一张有10列的大桌子。大多数情况下,其中4个仍然为空。我有一个查询,该查询不将null值设为任何大小或不包含字节大小。我读了几篇文章,其中有些在说: http://www.sql-server-citation.com/2009/12/common-mistakes-in-sql-server-part-4.html 有一个误解,即如果我们在表中具有NULL值,则它不会占用存储空间。事实是,NULL值占用空间– 2个字节 SQL:使用NULL值与默认值 甲NULL在数据库中的值是一个系统值占用一个字节存储的并指示值不存在,而不是一个空间或零或任何其他的默认值。 您能否指导我有关空值占用的大小。

19
空检查链与捕获NullPointerException
Web服务返回巨大的XML,我需要访问它的深层嵌套字段。例如: return wsObject.getFoo().getBar().getBaz().getInt() 问题是getFoo(),getBar(),getBaz()可能所有的回报null。 但是,如果我null在所有情况下都进行检查,则代码将变得非常冗长且难以阅读。此外,我可能会错过某些领域的检查。 if (wsObject.getFoo() == null) return -1; if (wsObject.getFoo().getBar() == null) return -1; // maybe also do something with wsObject.getFoo().getBar() if (wsObject.getFoo().getBar().getBaz() == null) return -1; return wsObject.getFoo().getBar().getBaz().getInt(); 可以写吗 try { return wsObject.getFoo().getBar().getBaz().getInt(); } catch (NullPointerException ignored) { return -1; } 或将其视为反模式?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.