【问题标题】:Check if a bool variable is initialized in c#检查是否在 C# 中初始化了布尔变量
【发布时间】:2014-11-17 10:44:59
【问题描述】:

所以我在模型中有一个像这样的布尔变量。

bool Foo;

我正在从服务器接收数据并将其反序列化为模型对象。因此,服务器数据中不存在的任何字段都会被初始化为默认值。而default(bool) 是假的。

但值false 也是我的变量Foo 的可接受值。那么有没有办法检查它是否从服务器或其默认值获得值false

对于其他类型,例如 int、double 等,我也有同样的问题,它们不默认为 null。

【问题讨论】:

  • 您考虑过使用bool? 吗?
  • @MarcGravell 在反序列化时,如果不是从服务器发送的,该值是否会为 null 而不是 false?只想确认一次。
  • 是的,如果没有明确分配非空值,则为空

标签: c# boolean


【解决方案1】:

代替你,我会使用Nullable<bool> (bool?) 来达到你的目的。然后你就可以用这种方式检查值了:

bool? Foo;

if(Foo.HasValue)
{
   // do something with Foo.Value
}
else
{
   // Foo is uninitialized
}

【讨论】:

  • 太棒了。谢谢。我不知道那件事。现在我必须以这种方式更改我的整个代码以制作 int、double 等:(
【解决方案2】:

在我的系统(Microsoft (R) Visual C# Compiler 版本 4.7.3190.0)上,接受的答案不完整:编译器错误。只需要初始化为空变量声明。所以:

bool? Foo = null;

if (Foo.HasValue)
{
    // do something with Foo.Value 
}
else
{
    // Foo is uninitialized
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-12
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 2022-11-12
    • 2022-01-08
    相关资源
    最近更新 更多