asp.net主属性字符串,如果字符串为空,如何检查内容页面

时间:2012-05-30 13:36:25

标签: c# asp.net

如果我有一个主属性字符串,例如:

public String SharedInfo
{
    get { return (String)Session["SharedInfo"]; }
    set { Session["SharedInfo"] = value; }
}

和内容页面中的标签,我通过执行以下操作检查字符串是否为空: if(Master.SharedInfo == null)

现在我的问题是:为什么if(Master.SharedInfo ==“”)不起作用,因为SharedInfo是一个字符串对吗?

3 个答案:

答案 0 :(得分:2)

有一种方法可以“捕获”两者

if (String.IsNullOrEmpty(Master.SharedInfo)) {
    ...
}

null""不相等。 null表示根本没有字符串。 ""是一个长度为0的字符串。

string s = null;
int i = s.Length; // <-- Throws null reference exception

但是

string s = "";
int i = s.Length; // OK, i => 0

""String.Empty是等效的。有些人说你应该总是使用String.Empty而不是"",但它确实没有区别。


<强>更新

编译器实现了等字符串常量,即编译器只存储一次相等的常量。你可以做一个简单的测试(回应@ BobTodd的评论),

string s = ""; 
Console.WriteLine(Object.ReferenceEquals(s, "")); // --> true
Console.WriteLine(Object.ReferenceEquals(s, String.Empty)); // --> true

为了完整起见(根据@ JoelEtherton的评论)。从.NET Framework 4.0开始,您可以测试

if (String.IsNullOrWhitespace(Master.SharedInfo)) {
    ...
}

这也会捕获" ""\t"等字符串。

答案 1 :(得分:1)

在c#中,空字符串""不为空。它是一个实际的字符串,长度等于零。

您可以使用string.IsNullOrEmpty(string stringToTest)检查空字符串和空字符串。

答案 2 :(得分:1)

String.Empty(“”)与null完全不同

它完全取决于写入Session [“SharedInfo”]的内容。

如果没有,则它将为null,否则为其写入的值,可以是空字符串或null。

确保使用String.IsNullOrEmpty(string @string)