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

本文关键字:字符串 何签入 net 主属性 如果 asp | 更新日期: 2023-09-27 18:35:49

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

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

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

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

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

有一个方便的方法可以"捕获"两者

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"这样的字符串。

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

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

String.Empty(")和null完全不同

这完全取决于写入会话的内容["共享信息"]。

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

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