哪个是在ASP.NET中使用字符串的最佳实践(C#)

Vij*_*dra 3 c# asp.net string null

我想知道哪个是在C#中声明字符串的首选方法:

string strEmpty = String.Empty;
Run Code Online (Sandbox Code Playgroud)

   要么

string strNull = null;
Run Code Online (Sandbox Code Playgroud)

哪种做法更好或这些陈述之间有什么区别.

Eri*_*ich 7

第一个答案使字符串的值成为一个实际的空字符串.将其指定为null会使指针指向任何内容.这意味着如果您尝试执行strEmpty.Function(),则在第二种情况下不起作用.

第一个最初需要更多内存,但更清晰.

正确的答案取决于你接下来会做什么.如果你只是要重新分配字符串,我会成功null.如果你打算对字符串做事(执行函数,追加等),我会做的string.empty.

  • Nitpick:我很确定String.Empty版本*不会占用更多内存.String.Empty是interned,因此您只需要引用的内存开销,该引用与null引用的大小相同; 你不会产生新的字符串对象的成本.但是你和其他的回答者是正确的,关键问题是你打算用引用做什么,而不是内存成本. (2认同)

Seb*_*Seb 7

区别在于语义.

每当你在代码中找到一个NULL指针时,就意味着什么都没有.这意味着它尚未初始化为任何东西,因此您无法使用它.

另一方面,空字符串一个字符串.它已被初始化,任何查看代码的程序员都会将该字符串视为要使用的有效对象.

例如,考虑将相对URL存储在字符串中.如果您发现该字符串为空,您会认为它指向根路径.但是如果它是NULL,你应该认为它不是一个有效的变量 - 它没有被初始化,你不应该使用它.

基于此,您将采用不同的路径 - 空URL表示与NULL变量非常不同的东西.