gpt4 book ai didi

c# - 检查字典中key的值是否为null

转载 作者:行者123 更新时间:2023-12-02 09:14:42 25 4
gpt4 key购买 nike

我尝试使用字典,需要检查键的值(称为名称)是否为空,如果是,则使用一些默认字符串作为我的键的值,例如“未知”。

我知道我可以使用 string.Length == 0 检查字符串,但我的问题是我有一个对象作为值,并且我很难捕获它。

这是我的代码:

 IDictionary<string, object> parameters = new Dictionary<string, object>();
string Name = de.Properties["Name"].Value.ToString(); //Name is sometimes empty and sometimes not
parameters.Add("Name", Name);

更新:

IDictionary<string, object> parameters = new Dictionary<string, object>();
string Name = de.Properties["Name"].Value.ToString();
if (parameters.TryGetValue("Name", out var Name))
{
parameters.Add("Name", Name ?? "unknown");
}

最佳答案

null 和空字符串是完全不同的东西。 null 表示没有值,而空字符串 一个字符串,它只是空的。您不能对 null 调用 .ToString().Length,您会得到一个异常,因为没有值可以处理该调用。

您可以使用Dictionary.TryGetValue检查是否存在并同时检索值。

之后,如果您确实想将所有内容都转换为字符串,可以使用 null-conditional operator ?. 调用 ToString(),如果 name 为 null,则不会抛出异常。如果 name 为 null,则整个表达式 name?.ToString() 的计算结果也为 null

然后您可以使用null-coalescing operator ?? 用默认值替换空值:

var de= new Dictionary<string, object?>();
de["Name1"]=null;
de["Name2"]=42;

if(de.TryGetValue("Name2",out var name))
{
var valueAsString=name?.ToString() ;
parameters.Add("Name2", valueAsString ?? "unknown");
}

如果您只想用默认值替换空值,则不需要 ToString() :

if(de.TryGetValue("Name2",out var name))
{
parameters.Add("Name2", name ?? "unknown");
}

如果要检查是否为 null 或为空,可以使用 String.IsNullOrEmpty :

if(de.TryGetValue("Name2",out var name))
{
var newValue=String.IsNullOrEmpty(name)
? "unknown"
: name.ToString(); //Only if we want to format to strings
parameters.Add("Name2", newValue);
}

最后,如果您想替换 parameters 字典中的现有键,请使用

parameters["Name2]= newValue;

关于c# - 检查字典中key的值是否为null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60414914/

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