C# 布尔条件检查

C# 布尔条件检查,c#,C#,我有一个查询处于检查状态 var hasListHeader = false; using(SqlDataReader reader = sql.ExecuteQueryReturnDR(query, sqlParams)) //this will return SqlDataReader { if(hasListHeader = reader.HasRows) { } } 我能检查一下情况是否像那样吗?首先从reader.HasRows分配,然后检查条件 我没有这样做,

我有一个查询处于检查状态

var hasListHeader = false;

using(SqlDataReader reader = sql.ExecuteQueryReturnDR(query, sqlParams)) //this will return SqlDataReader
{
   if(hasListHeader = reader.HasRows)
   {

   }
}
  • 我能检查一下情况是否像那样吗?首先从
    reader.HasRows
    分配,然后检查条件
  • 我没有这样做,而是像上面那样检查。这是好的做法吗

    hasListHeader = reader.HasRows;
    if(hasListHeader)
    {
    }
    
    你应该使用

    hasListHeader = reader.HasRows;
    if(hasListHeader)
    {
    }
    
    仅当您打算使用变量
    hasListHeader
    供以后使用时,可以使用相同的方法或代码库中的其他地方

    如果在
    If
    语句之后不需要
    hasListHeader
    ,那么我会删除它并使用

    if(reader.HasRows)
    {
    }
    
    你应该使用

    hasListHeader = reader.HasRows;
    if(hasListHeader)
    {
    }
    
    仅当您打算使用变量
    hasListHeader
    供以后使用时,可以使用相同的方法或代码库中的其他地方

    如果在
    If
    语句之后不需要
    hasListHeader
    ,那么我会删除它并使用

    if(reader.HasRows)
    {
    }
    

    是的,您可以像这样检查布尔值,因为赋值是一个具有右操作数值的表达式,所以

    hasListHeader = reader.HasRows
    
    评估
    reader.HasRows
    的值,并将该值作为副作用分配给
    hasListHeader


    但是,这样做并不好,如果认为语句更清晰,则将赋值移到
    语句上方。

    是的,您可以像这样检查布尔值,因为赋值是一个具有右侧操作数值的表达式,所以

    hasListHeader = reader.HasRows
    
    评估
    reader.HasRows
    的值,并将该值作为副作用分配给
    hasListHeader


    然而,这样做并不被认为是一种好的方式,如果认为
    语句更清晰,那么将赋值移到
    上方。

    +1在这个解决方案中,“意图”是清晰而简单的,很好+1在这个解决方案中,“意图”是明确而简单的,很好!我真的不明白你的问题。但是如果我需要
    hasListHeader
    的值在
    using
    块之外,我会使用第一个符号。如果你不需要
    hasListHeader
    的值在
    using
    块之外,那么我会使用
    reader.HasRows
    作为
    If
    的条件,但我认为这里不是这样。我真的不理解你的问题。但是如果我需要
    hasListHeader
    的值在
    using
    块之外,我会使用第一个符号。如果在
    using
    块之外不需要
    hasListHeader
    的值,那么我会使用
    reader.HasRows
    作为
    If
    的条件,但我认为这里不是这样。