gpt4 book ai didi

作为字符串的 C# bool 值始终为 null

转载 作者:行者123 更新时间:2023-11-30 13:27:29 24 4
gpt4 key购买 nike

我试图将变量属性信息转储到一个简单的字符串中,但是当它到达我的可为空的 boolean 值时,as string 总是返回 null —— 即使实际值为 true |假的!

StringBuilder propertyDump = new StringBuilder();

foreach(PropertyInfo property in typeof(MyClass).GetProperties())
{
propertyDump.Append(property.Name)
.Append(":")
.Append(property.GetValue(myClassInstance, null) as string);
}

return propertyDump.ToString();

没有异常被抛出;快速,输出正是我想要的,除了 bool? 的任何属性始终为 false。如果我快速观看并执行 .ToString() 它会起作用!但我不能保证其他属性实际上不为空。

谁能解释一下这是为什么?更好的是,解决方法?

最佳答案

boolean 值不是字符串,因此当您将装箱的 boolean 值传递给 as 运算符时,as 运算符会返回 null。

在你的情况下,你可以使用类似的东西:

object value = property.GetValue(myClassInstance, null);

propertyDump.Append(property.Name)
.Append(":")
.Append(value == null ? "null" : value.ToString());

如果你想要空值而不附加任何文本,你可以只使用 Append(Object)直接:

propertyDump.Append(property.Name)
.Append(":")
.Append(property.GetValue(myClassInstance, null));

这会起作用,但会在“propertyDump”输出中留下空属性作为缺失条目。

关于作为字符串的 C# bool 值始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11004478/

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