我想知道是否有一种特殊的方法/技巧来检查一个String
对象是否为null。我知道String.IsNullOrEmpty
方法,但我想区分一个null
字符串和一个空字符串(=""
)。
我应该简单地使用:
if (s == null) {
// blah blah...
}
...或者还有其他方法吗?
我想知道是否有一种特殊的方法/技巧来检查一个String
对象是否为null。我知道String.IsNullOrEmpty
方法,但我想区分一个null
字符串和一个空字符串(=""
)。
我应该简单地使用:
if (s == null) {
// blah blah...
}
...或者还有其他方法吗?
一个对象不能为null - 一个表达式的值可以为null。 在你的脑海中清晰区分这两者是值得的。s
的值不是一个对象 - 它是一个引用,它可以是null或指向一个对象。
而且,是的,你应该只使用
if (s == null)
请注意,这仍将使用在字符串中定义的重载 == 运算符,但那样做是正确的。
你可以使用“null coalescing”运算符(双问号)来检查字符串或其他可空值类型中是否为 null:
textBox1.Text = s ?? "Is null";
运算符'??'检查's'的值是否为null,如果不是,则返回's';如果它为空,则返回运算符右侧的值。textBox1.Text = customer?.orders?[0].description ?? "n/a";
如果描述为null,或订单为null,或客户为null,则返回“n/a”,否则返回描述的值。
更多信息请参见: https://msdn.microsoft.com/en-us/library/dn986595.aspx
为确保准确性,您应该使用以下函数来检查null和空值:
string str = ...
if (!String.IsNullOrEmpty(str))
{
...
}
如果您使用的是 C# 7.0
或更高版本,则可以使用 is null
:
if (s is null) {
// blah blah...
}
同时,注意在处理字符串时,您可能还需要考虑使用IsNullOrWhiteSpace
,它可以验证字符串是否只包含空格。
针对 .net 5(可能也适用于 .net Core 3.1)
不同的写法,但问题总是一样。
string wep = test ?? "replace";
Console.WriteLine(wep);
结果: "替换"
或者
string test=null;
test ??= "replace";
Console.WriteLine(test);
test="";
test??="replace";
Console.WriteLine(test);
string test="";
if(test is null)
Console.WriteLine("yaouh");
else
Console.WriteLine("Not yahouu");
结果:"不是雅虎"
您可以使用 null 或 Number 进行检查。
首先,在您的应用程序中添加对 Microsoft.VisualBasic
的引用。
然后,使用以下代码:
bool b = Microsoft.VisualBasic.Information.IsNumeric("null");
bool c = Microsoft.VisualBasic.Information.IsNumeric("abc");
b
和 c
都应该是 false
。