【发布时间】:2010-09-30 17:40:29
【问题描述】:
是否可以在 C# 中使用一个开关来检查值是否为空或空,而不是“”,而是 String.Empty?我知道我可以做到:
switch (text)
{
case null:
case "":
break;
}
有没有更好的方法,因为我不想拥有大量的 IF 语句?
我正在尝试替换:
if (String.IsNullOrEmpty(text))
blah;
else if (text = "hi")
blah
【问题讨论】:
-
我不知道 String.Empty 和 "" 之间有区别。有什么区别?
-
没有。在内容层面也是如此。参考不同。 String.Empty 总是返回相同的实例,而 "" 返回不同的实例。
-
我很确定两个 "" 实际上是同一个对象,因为 .net 实习生字符串,但不是肯定的。 object.ReferenceEquals 表示它们是相同的。
-
我的测试与 Josh 的一致 - 文字空字符串 "" 指的是与 String.Empty 相同的对象。我不确定任何标准都可以保证这一点(尽管可以保证文字的实习 - 不确定该保证是否适用于 String.Empty),但现在肯定会发生这种情况。
-
现在的问题是......如果它在单独的程序集中或在单独的方法/类/等中怎么办?亲身。我使用 String.Empty 因为它比 "" 更具可读性。
标签: c# string switch-statement semantics