【问题标题】:Conditional operator not working as expected条件运算符未按预期工作
【发布时间】:2013-06-14 13:08:17
【问题描述】:

我有以下代码,其中我使用条件运算符来查找空值并在找到空值时分配另一个值。我的问题是由于某种原因它没有正确检测到空值。

sliderQuestion11.Value = Convert.ToDouble(cs.q11 != null ? cs.q11 : "10");

cs 是一个由 SQLite 查询填充的类,而 q11 是一个字符串。

我收到“值不能为空”错误。谢谢。

编辑

感谢大家的帮助。所有这些答案都应该有效,但我要做的不仅仅是返回

query.FirstOrDefault()

我必须做以下事情

CustomerSurvey cs = new CustomerSurvey();
cs.q1 = query.FirstOrDefault().q1 ?? "-10";
cs.q2 = query.FirstOrDefault().q2 ?? "-10";
cs.q3 = query.FirstOrDefault().q3 ?? "-10";                        
cs.srID = query.FirstOrDefault().srID;

现在可以了

sliderQuestion11.Value = Convert.ToDouble(cs.q11 != "-10" ? cs.q11 : "10");

(我知道你会说为什么不直接将其设置为 10,但我需要在代码中的其他位置检测空值。这就是我使用 -10 的原因)

【问题讨论】:

  • 请注意,空字符串不是null。您选择不使用?? 运算符是否有原因?
  • 试试Convert.ToDouble(!IsNullOrEmpty(cs.q11) ? cs.q11 : "10");
  • 我试过了??操作员。我一直使用它和条件运算符,但在这种情况下,无论我做什么,我都会收到“值不能为空”错误。

标签: c# entity-framework sqlite conditional-operator


【解决方案1】:

也许你需要:

!string.IsNullOrEmpty(cs.q11) ? cs.qll : "10";

使用string.IsNullOrEmpty的原因是因为字符串可能只是空而不是null

完整的sn-p:

sliderQuestion11.Value = Convert.ToDouble(!string.IsNullOrEmpty(cs.q11) ? cs.qll : "10");

【讨论】:

    【解决方案2】:

    你也可以试试这个代码:

    sliderQuestion11.Value = Convert.ToDouble(cs.q11 ?? "10");
    

    【讨论】:

      【解决方案3】:

      应该是这样的

      sliderQuestion11.Value = (cs != null && (!string.IsNullOrWhitespace(cs.q11)) ? Convert.ToDouble(cs.q11) : 10);
      

      【讨论】:

        【解决方案4】:
        sliderQuestion11.Value = Convert.ToDouble(!string.IsNullOrWhiteSpace(cs.q11) ? cs.q11 : "10");
        

        除了 null 和空检查之外,这还将检查字符串是否仅包含 1 个或多个空格。

        【讨论】:

          【解决方案5】:

          又一个答案::)

          sliderQuestion11.Value = string.IsNullOrWhitespace(cs.q11) ? 10.0 : Convert.ToDouble(cs.q11);
          

          【讨论】:

            猜你喜欢
            • 2012-04-29
            • 2020-12-24
            • 2015-05-11
            • 2019-06-20
            • 2021-04-13
            • 1970-01-01
            • 2020-12-29
            • 2021-04-30
            • 2019-12-10
            相关资源
            最近更新 更多