【问题标题】:How to handle a bool if it doesn't exist?如果 bool 不存在,如何处理它?
【发布时间】:2022-03-02 19:06:15
【问题描述】:

我在我的问题下面创建了一个简化的场景。我需要将 EmptyBookingAllowed 设置为 truefalse,但某些客户的配置中不会存在 AllowEmptyBooking

如果config.AllowEmptyBooking 将EmptyBookingAllowed 设置为true,如何将其设置为config.AllowEmptyBooking 的值。

public Class BookingSession()
{
    public string Username {get; set;}
    public bool EmptyBookingAllowed {get; set;}
}

BookingSession session = new BookingSession(){ 
    Username            = "whatever",  
    EmptyBookingAllowed = config.AllowEmptyBookings
};

【问题讨论】:

  • config.AllowEmptyBookings 是否允许“未定义”的概念,或者它的默认值是否为“false”?
  • 如果config不存在时是null...那么就像这样EmptyBookingAllowed = config?.AllowEmptyBookings ?? true
  • 您的配置类如何以及您的配置类如何映射?使 config.AllowEmptyBookings 像 bool? 一样可以为空,并在设置 EmptyBookingAllowed 可能有帮助时进行空检查
  • 验证属性是否存在stackoverflow.com/a/15341181/5605739
  • 您需要将EmptyBookingAllowed 设为可空类型bool?

标签: c#


【解决方案1】:

使用 Null 合并运算符:

EmptyBookingAllowed = (config?.AllowEmptyBookings ?? true);

【讨论】:

  • 它不适用于空配置。更好地使用(config?.AllowEmptyBookings ?? true)
  • 它应该是config?.AllowEmptyBookings ?? true?.而不是?):注意,如果AllowEmptyBookingsbool它总是存在的,而config可以是null
  • 澄清一下,config 将永远存在,但是 config.AllowEmptyBookings 可能并不总是存在。
  • @joehelsing 那么你需要在你的配置类中使用bool? 而不是bool 作为AllowEmptyBookings
  • @joehelsing 如果它是 bool 而不是 bool?(可为空),那么它始终存在。
猜你喜欢
  • 2012-06-22
  • 1970-01-01
  • 2017-08-21
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多