Nothing And TestString <> "" Then ... -6ren">
gpt4 book ai didi

vb.net - String <> Nothing 和 String <> ""VB .NET 中的冗余?

转载 作者:行者123 更新时间:2023-12-03 00:49:36 31 4
gpt4 key购买 nike

我查看了一些代码并发现了这个:

Dim TestString As String
...
If TestString <> Nothing And TestString <> "" Then
...
EndIf

这两个条件检查的是同一件事吗?

谢谢

最佳答案

Nothing 根本就不是字符串(在其他语言中为 null),这与空字符串 ("") 不同,这实际上是一个字符串。

但是,检查应该替换为 If Not String.IsNullOrEmpty(TestString) Then,这样可以更清楚地说明您到底在做什么。

我刚刚在 LINQPad 中尝试了一下,发现了一些有点令人惊讶的东西。在 VB.NET 中:

Dim s1 as string = Nothing
Dim s2 as string = ""

Console.WriteLine(s1 is Nothing) 'True
Console.WriteLine(s2 is Nothing) 'False

Console.WriteLine(s1 = "") 'True
Console.WriteLine(s2 = "") 'True

Console.WriteLine(string.IsNullOrEmpty(s1)) 'True
Console.WriteLine(string.IsNullOrEmpty(s2)) 'True

在 C# 中:

string s1 = null;
string s2 = "";

Console.WriteLine(s1 == null); //True
Console.WriteLine(s2 == null); //False

Console.WriteLine(s1 == ""); //False
Console.WriteLine(s2 == ""); //True

Console.WriteLine(string.IsNullOrEmpty(s1)); //True
Console.WriteLine(string.IsNullOrEmpty(s2)); //True

我没想到会这样。 VB.Net 似乎将 Nothing 视为空字符串。我的猜测是为了与旧版本的 VB 兼容。

这更加强调您应该使用 String.IsNullOrEmpty 进行此类检查,因为它更明确您要检查的内容,并且按预期工作。

关于vb.net - String <> Nothing 和 String <> ""VB .NET 中的冗余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11287210/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com