为什么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。空