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

时间:2009-10-14 18:31:42

标签: c# asp.net string null

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

string strEmpty = String.Empty;

string strNull = null;

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

5 个答案:

答案 0 :(得分:7)

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

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

正确的答案取决于你接下来会做什么。如果您要重新分配字符串,我会将其设为null。如果您打算对字符串执行操作(执行函数,追加等),我会将其设为string.empty

答案 1 :(得分:7)

区别在于 语义

每当你在代码中找到一个NULL指针时,就意味着它真的是 nothing 。这意味着它尚未被初始化为任何东西,因此您无法使用它。

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

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

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

答案 2 :(得分:3)

没有“最好的”。你做什么取决于你的意思。

空字符串的长度为0,但字符串。当你绝对必须返回某种字符串时,即使它是零长度,也要这样做。这很少见。

null首先不是字符串,它是一个空指针。当缺少字符串是一个可能影响应用程序其他部分的有意义的条件时,请执行此操作。

答案 3 :(得分:2)

在典型的业务线应用中,语义差异非常明显:Null表示值未知或不适用,Empty表示该值为空白。

在其他类型的应用程序中,语义或多或少取决于您,只要您记录它们并在整个团队中一致地应用它们。

表现没有差异。

答案 4 :(得分:1)

null和empty字符串之间的区别确实是语义上的,但它们在很大程度上是符合惯例的。

在.NET中,System.String类具有静态方法IsNullOrEmpty,在大多数情况下最好使用它。