如何将字符串的值设置为null

16

我知道我可以像这样设置 null:

string val = null;

但我想知道其他设置为null的方法。是否有类似于String.null的函数可供使用。


9
为什么你需要另一种方法来做这件事? - Charleh
1
为什么执行字符串 val = String.null 会更好一些呢?null 与字符串关系不大。 - Osama Javed
你的意思是创建一个 static void StringUtils.SetNull(out string s) 方法来将 s 设置为 null 吗?在我看来这样做有点过了。直接赋值不好吗? - Frédéric Hamidi
@dash 如果我将其更改为某些内容,然后将其设置回null... - Ajax3.14
你例子中的 string val 不是一个字符串,而是一个字符串对象的引用。你可能需要了解一下 C# 中对象的处理方式。 - Wormbo
显示剩余2条评论
7个回答

29

我认为您正在寻找 String.Empty

string val = String.Empty;

更新: TheFuzzyGiggler 的评论值得一提:

最好将一个字符串设置为空字符串,而不是null,以避免后续出现异常。如果您需要读写大量的字符串,则可能会在很多地方遇到null值异常。或者您将不得不编写许多 if(!string.isNullorEmpty(string)) 这样的代码,这会变得很烦人。


7
抢我发言了!如果楼主看到这条留言... 我发现将一个字符串设置为空字符串比设置为 null 好得多,可以避免后面出现异常。如果你需要频繁读写字符串,你会在许多地方遇到空值异常,或者你需要大量使用"if(!string.isNullorEmpty(string))" 的语句,这很麻烦。 - TheFuzzyGiggler
6
谢谢赞扬,很高兴能够帮助。我会让Asif来接受荣誉的。=) - TheFuzzyGiggler
1
Null和String.Empty绝对不能互换。如果您的系统认为它们是相同的,请使用Empty,但它们并不相同。您不能随意地在可以使用另一个的地方使用其中一个。用户输入空字符串和用户未输入任何内容之间存在差异。 - Joe Phillips

16

3
这句话的意思是string val = (string)null;和"一个带类型的空引用"是相同的。 - Wormbo
@Wormbo - 正确。使用 default 的好处在于它适用于值类型和引用类型。 - Seth Flowers

4
< p > null不是一个特殊的字符串值(String.Empty用于表示空字符串""),而是一个表示空引用的通用对象字面量。


0

显然,将某些东西设置为null的另一种方法是分配返回null的函数结果:

string SomeFunctionThatReturnsNullString() {return null;}

string val = SomeFunctionThatReturnsNullString();

0
将其分配给此值将使其成为 null,(选择正确的 SQL 数据类型,在这里是 double)。
    System.Data.SqlTypes.SqlDouble.Null

0

在更新数据库时,我经常遇到这个问题。特别是当列是日期时。如果传递 "" 或 String.Empty,则日期将设置为 MinDate,通常显示为 01/01/1900。因此,当您不想要日期时,Null 是首选值。

我必须确保捕获 "" 情况并替换 DBNull.Value,这将向 DB 传递一个 Null 值。

if (!string.IsNullOrEmpty(this.DeletedDate)) { 
                db.AddParameter("newDeletedDate", this.DeletedDate);
            }
            else
            {
                db.AddParameter("newDeletedDate", DBNull.Value);
            }

-1

根据您的应用程序,您可以使用string.Empty。 我总是对初始化为null持谨慎态度,因为垃圾收集器虽然很好,但并不完美,如果以某种垃圾收集器无法检测到的方式使用它,可能会标记您的字符串进行垃圾收集(尽管这种情况非常罕见)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接