默认字符串初始化:NULL 还是空? [关闭]

2024-03-26

我总是将字符串初始化为 NULL,认为 NULL 意味着没有值,而“”或 String.Empty 是有效值。我最近看到了更多代码示例,其中 String.Empty 被视为默认值或代表无值。这让我觉得很奇怪,随着 c# 中新添加的可空类型,我们似乎通过不使用 NULL 来表示“无值”而在字符串方面大踏步前进。

您使用什么作为默认初始化程序?为什么?

编辑:根据答案我进一步思考

  1. 避免错误处理如果该值不应该为空,为什么它被设置为NULL首先?也许最好在错误发生的地方识别错误,而不是在代码库的其余部分中掩盖它?

  2. 避免空检查如果您厌倦了在代码中进行空检查,那么抽象空检查不是更好吗?也许包装(或扩展!)字符串方法来使它们NULL安全的?如果你经常使用会发生什么String.Empty并且 null 碰巧以某种方式进入您的系统,您是否开始添加NULL无论如何检查?

我不禁又回到这个观点,那就是懒惰。如果你使用 '' 代替,任何 DBA 都会打你九个愚蠢的方法null在他/她的数据库中。我认为同样的原则也适用于编程,并且应该有人来打击那些使用String.Empty而不是NULL代表没有价值。

相关问题

  • 在 C# 中,我应该使用 string.Empty 还是 String.Empty 还是“”? https://stackoverflow.com/questions/263191/in-c-should-i-use-stringempty-or-stringempty-or
  • String.Empty 和“”有什么区别 https://stackoverflow.com/questions/151472/what-is-the-difference-between-stringempty-and
  • Null 或空字符串表示表列中没有数据? https://stackoverflow.com/questions/167952/null-or-empty-string-to-represent-no-data-in-table-column

+1 用于区分“空”和 NULL。我同意“空”应该意味着“有效,但空白”,“NULL”应该意味着“无效”。

所以我会这样回答你的问题:

empty当我想要一个可能会或可能不会更改的有效默认值时,例如用户的中间名。

NULL如果后续代码未显式设置该值,则会出现错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

默认字符串初始化:NULL 还是空? [关闭] 的相关文章

随机推荐