我知道我可以像这样设置 null:
string val = null;
但我想知道其他设置为null的方法。是否有类似于String.null
的函数可供使用。
我认为您正在寻找 String.Empty
string val = String.Empty;
更新: TheFuzzyGiggler 的评论值得一提:
最好将一个字符串设置为空字符串,而不是null,以避免后续出现异常。如果您需要读写大量的字符串,则可能会在很多地方遇到null值异常。或者您将不得不编写许多
if(!string.isNullorEmpty(string))
这样的代码,这会变得很烦人。
你也可以使用"default"关键字。
string val = default(string);
以下是另一个有关C#中default关键字的SO问题:What is the use of `default` keyword in C#?
string val = (string)null;
和"一个带类型的空引用"是相同的。 - Wormbodefault
的好处在于它适用于值类型和引用类型。 - Seth Flowersnull
不是一个特殊的字符串值(String.Empty
用于表示空字符串""),而是一个表示空引用的通用对象字面量。
显然,将某些东西设置为null的另一种方法是分配返回null的函数结果:
string SomeFunctionThatReturnsNullString() {return null;}
string val = SomeFunctionThatReturnsNullString();
System.Data.SqlTypes.SqlDouble.Null
在更新数据库时,我经常遇到这个问题。特别是当列是日期时。如果传递 "" 或 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);
}
根据您的应用程序,您可以使用string.Empty
。 我总是对初始化为null
持谨慎态度,因为垃圾收集器虽然很好,但并不完美,如果以某种垃圾收集器无法检测到的方式使用它,可能会标记您的字符串进行垃圾收集(尽管这种情况非常罕见)。
static void StringUtils.SetNull(out string s)
方法来将s
设置为null
吗?在我看来这样做有点过了。直接赋值不好吗? - Frédéric Hamidistring val
不是一个字符串,而是一个字符串对象的引用。你可能需要了解一下 C# 中对象的处理方式。 - Wormbo