我试图用 bool TryParse(); 替换以下内容
result = table1.Columns.Contains("data1") ?
(table1.Rows[0]["data1"].ToString().ToLower().Equals("true") ? true : false) :
result;
Run Code Online (Sandbox Code Playgroud)
问题是,如果没有“data1”,它返回 false(实际上应该为 null),否则返回 true。如果没有 data1,我希望将“结果”分配为空。
编辑:
我原封不动地保留了原来的答案,但我认为我误解了一些东西。假设该data1列可为空,并且您想要一个 NULL 字段(实际上包含DBNull.Value, )来生成 C# null,那么您可以执行以下操作:
table1.Rows[0].IsNull("data1")
? (bool?)null
: bool.TryParse(table1.Rows[0].Field<string>("data1"), out var data1) && data1
Run Code Online (Sandbox Code Playgroud)
这将首先检查 NULL,然后解析string是否有。当然,如果您希望值能够为null,则数据类型为 nowbool?而不是bool。
原来的:
您可以在传递参数时声明内联变量,以便可以像这样out测试布尔值:string
if (bool.TryParse(text, out var flag) && flag)
Run Code Online (Sandbox Code Playgroud)
TryParsetrue如果text解析成功将返回,然后flag将是trueor false。这意味着:
table1.Rows[0]["data1"].ToString().ToLower().Equals("true") ? true : false
Run Code Online (Sandbox Code Playgroud)
会变成这样:
bool.TryParse(table1.Rows[0]["data1"].ToString(), out var data1) && data1
Run Code Online (Sandbox Code Playgroud)
请注意,如果输入无法解析,第一个表达式将是falseso 整个事情将是false。如果输入解析成功,则整个内容与第二个表达式具有相同的值。
我应该提到,这样的内联声明并不总是可行,但是,如果有人使用的 C# 版本足够旧,那么他们可能应该升级。
| 归档时间: |
|
| 查看次数: |
209 次 |
| 最近记录: |