【问题标题】:True, false, don't care真假,无所谓
【发布时间】:2019-02-16 13:35:09
【问题描述】:

我想询问一些验证逻辑的正确做法。 任何关于有效输入的建议,可能需要、不需要或不关心。

案例 1:需要一个文本字段。

bool required = true;
if(!String.IsNullOrEmpty("123") != required)
{
   //Error
}

案例 2:不需要文本字段。

bool required = false;
if(!String.IsNullOrEmpty("123") != required)
{
   //Error
}

案例 3:文本字段是可选的

我想要实现的是使用一个通用函数来进行验证。

//this flag will change based on different input fields
bool required = true; 
if(required != null && (!String.IsNullOrEmpty(input) != required))
{
  //Error
}

我考虑过 null 但我不确定这是否是唯一的方法。 谢谢大家!

【问题讨论】:

  • 我不清楚你在问什么
  • 你不是在寻找 if(validate && !string.IsNullOrEmpty()) - 这将确保如果 validate 为 false 它不会抛出错误,否则如果它是 true 它将检查 null 或空然后抛出错误?
  • 不关心就是不验证
  • 如果您需要具有三种状态的布尔值,请使用bool? 如果这不是您想要的,您需要针对您的问题做一些工作。 难以置信不清楚。
  • 对不起。我已经更新了我的问题。希望这更清楚。

标签: c# boolean logic boolean-logic


【解决方案1】:

我认为您正在寻找这样的东西:

bool? mandatory = null;  // true, false or null for "I don't care"
if(mandatory.HasValue && string.IsNullOrEmpty(x) == mandatory.Value)
{
   //Error
}

【讨论】:

  • 如果您对我现在已删除的答案投了反对票,我建议您在我回答时查看state of the question,而不是在您提出问题时查看。无论如何,根据当前状态的问题,您的答案似乎是正确的,所以+1。
猜你喜欢
  • 2016-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
相关资源
最近更新 更多