string.Empty 与 "" 有啥区别?在使用中
定义 string 类型的 变量 strName
并附值strName.Trim().Equals(string.Empty)strName.Trim().Equals("")有啥区别当strName 为空字符串时 Equals 与 == 有差异吗?
定义 string 类型的 变量 strName
并附值strName.Trim().Equals(string.Empty)strName.Trim().Equals("")有啥区别当strName 为空字符串时 Equals 与 == 有差异吗?
"" 分配一个长度为空的存储空间
string.Empty是一个Static的属性,使用时不分配存储空间,而在用""时,系统会分配一个长度为空的存储空间。不过编译系统应该会优化,也就是说,比如你程序中有10个地方用到了"",但好的编译系统应该引用的是同一个对象。所以用""也就是浪费一个对象空间而已。
""分配一个长度为空的存储空间
所以一般用string.Empty为了以后跨平台,还是用string.empty在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。比如:string s = "";
string s2 = string.Empty;if (s == string.Empty) {
//
}
if语句成立
判定为空字符串的几种写法,按照性能从高到低的顺序是:s.Length == 0 优于 s == string.Empty 优于 s == ""
up 开发时优先使用String.Empty代替""
"" 分配一个长度为空的存储空间
但是用string.Empty就不会存在这个问题.
并非“长度为空”。考查代码
string s="";
为了存储"",需要在堆上分配3个字节,分别是两个0和""它在内存中的位置,即s.m_firstChar、s.m_arrayLength和s.m_stringLength
另外,还在堆栈上分配了1个字节,存放变量s本身那篇文章说Length比较最节省时间也是不对的,可以用Reflect出源代码看到,两者在效率上是相同的private static unsafe bool EqualsHelper(string strA, string strB)
{
int length = strA.Length;
if (length != strB.Length)
{
return false;
}
...