空字符串的目的是什么?

Max*_*oro 10 .net c# java language-agnostic programming-languages

对我来说,作为开发人员和用户,我发现空字符串("")无用且引起很多混乱,就像说string == char []

也许计算机需要空字符串,所以我想了解原因.

也可以看看:

LBu*_*kin 31

空字符串在现实世界中非常常见 - 它们可用于区分null.

  • Null表示该值未定义或未知.

  • 空字符串表示它已知为空(空).

它可能看起来像分裂头发,但有一点不同.空字符串是对象的实例 - 空值不是.您可以使用可以在字符串对象上调用的任何有效方法来操作空字符串.你无法操纵null.空字符串通常是对其他字符串进行某些操作的结果,例如:

var source = "Hello";
var result = source.Remove("Hello");  // result is now: ""
Run Code Online (Sandbox Code Playgroud)

以下是一个简单的示例,其中包含以下内容:具有通过文本框收集人员中间名的表单的应用程序.文本框的值应该为null还是空字符串?总是让文本框返回一个空字符串作为其值(当为空时)而不是尝试区分null和""时要容易得多.

有趣的是,有些数据库不区分NULL和空字符串 - 最好的例子是Oracle.在Oracle中:

INSERT into MYTABLE(name) VALUES('')
Run Code Online (Sandbox Code Playgroud)

实际上在表中插入一个NULL.实际上,当编写从.NET中的数据库操作数据的代码时,这可能会产生令人困惑的情况 - 有时候您可以达到DBNull.Value预期的目标String.

  • @Max Toro就是一个例子.你早餐吃什么?在提出问题之前,答案是未知的.空值.如果您要回答并且可听见地说"没有",则该数据表示为空字符串.在提出问题之前,答案是"价值未知".在问题(和答案)之后,值是emtpy. (6认同)

Car*_*ter 11

为什么我们需要零?这真的是同一个问题.什么是"睡衣"没有所有的?"PJM".什么是"a"没有所有的?"".就那么简单.某些字符串操作的产物是一个没有任何字符的字符串,这是空字符串.它的行为与任何其他字符串一样 - 您可以轻松确定其长度; 你可以将它连接到其他字符串,你可以计算其中的a,等等.


Ant*_*ram 9

有时,如果未填充,则需要一个非null的字符串值.否则,对于您需要执行的任何给定的字符串相关任务,您必须包含一个空检查,该检查仅用于膨胀您的代码.

只是为了记录它,在C#中,鼓励在""中指定string.Empty而不是硬编码.

编辑:正如LBushkin指出的那样,有一个空值与一个未知值之间存在差异.


Bjö*_*lex 6

有人可能会争辩说空字符串是Null对象模式的一个实例.正如安东尼指出的那样,这用于避免特殊情况和许多情况if.