【问题标题】:Replace a condition with Bool TryParse() in C#在 C# 中用 Bool TryParse() 替换条件
【发布时间】:2023-02-21 15:18:02
【问题描述】:

我试图用 bool TryParse(); 替换以下内容

result = table1.Columns.Contains("data1") ?
         (table1.Rows[0]["data1"].ToString().ToLower().Equals("true") ? true : false) :
         result;

问题是,如果没有 "data1" ,它将返回 false(实际上应该为 null),否则返回 true。如果没有 data1,我希望将“结果”分配为 null。

【问题讨论】:

  • 请显示可能的输入和预期输出的示例。在很多情况下,您并不清楚您的期望是什么。可能缺少 data1 列,该表中可能没有行,data1 列可能包含无效值。

标签: c# winforms


【解决方案1】:

您可以在传递 out 参数时声明一个内联变量,这样您就可以像这样测试布尔值 string

if (bool.TryParse(text, out var flag) && flag)

如果text被成功解析,TryParse将返回true,然后flag将是truefalse。这意味着:

table1.Rows[0]["data1"].ToString().ToLower().Equals("true") ? true : false

会变成这样:

bool.TryParse(table1.Rows[0]["data1"].ToString(), out var data1) && data1

请注意,如果输入解析失败,第一个表达式将是false,所以整个表达式将是false。如果输入解析成功,则整个内容与第二个表达式具有相同的值。

我应该提一下,这样的内联声明并不总是可行的,但是,如果有人使用的 C# 版本太旧而不能实现,他们可能应该升级。

【讨论】:

  • 我不明白,你能详细说明一下吗
  • 这个 returnin null 怎么像 Op 要求的那样?
猜你喜欢
  • 2010-11-10
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多