Equals在string和int的nullable之间有不同的行为

  • 本文关键字:之间 nullable string int Equals c#
  • 更新时间 :
  • 英文 :


为什么Equals在string和int的空值之间有不同的行为?

((int?)null).Equals(null)

该指令返回true

((String)null).Equals(null)

这个指令抛出null是null

如何检查KeyValuePair (String, String)的键是否为空

编辑:

我不能使用字符串。IsNullOrEmpty,因为我使用了一些KeyValuePair的列表(String, String)和一些列表的KeyValuePair (Int?字符串)其中键可以为null或String。空要对国家列表进行筛选的列表示例:

myList.Add(new KeyValuePair(null, "Undefined"));
myList.Add(new KeyValuePair("", "Empty"));
myList.Add(new KeyValuePair("ID101", "France"));
myList.Add(new KeyValuePair("ID102", "Spain"));

在这种情况下的行为是不同的,因为Nullable<T>值类型,而String引用类型

:

(int?)null

实际上有一个值,因为它是一个值类型。因此,您可以在其上调用方法。

在任何情况下,这是正交的底部的问题,如何检查如果KeyValuePair键类型的字符串是空的…

if (kvp.Key == null)

如果null的处理方式与String.Empty相同,则可以使用以下命令:

if (string.IsNullOrEmpty(kvp.Key))

如果键只包含空格(空格,制表符,换行符等),并且这也是等效的,您可以使用:

if (string.IsNullOrWhiteSpace(kvp.Key))

((String)null)此时您已经得到一个null -因此. equals不存在。

string. isnullorempty()用于测试字符串是否为空或等于string。空

最新更新