C# 我会在这里使用if语句还是bool语句?

C# 我会在这里使用if语句还是bool语句?,c#,C#,我需要找出一种方法来处理结果是否发现了什么,显示 “是的,找到了一些”其他显示“此时未找到任何用户”。我一直想弄明白,但我做不到。谢谢你抽出时间 我的代码如下: DateTime dt = DateTime.Today; DateTime less5dt = dt.AddDays(-5); This.cmb1.Items.Clear(); PrincipalSearchResult results = UserPrincipal.FindByLockoutTime( adPrinci

我需要找出一种方法来处理
结果
是否发现了什么,显示 “是的,找到了一些”其他显示“此时未找到任何用户”。我一直想弄明白,但我做不到。谢谢你抽出时间

我的代码如下:

DateTime dt = DateTime.Today;
DateTime less5dt = dt.AddDays(-5);
This.cmb1.Items.Clear();

PrincipalSearchResult results =
UserPrincipal.FindByLockoutTime(
     adPrincipalContext,
         dt,
          MatchType.GreaterThanOrEquals);

foreach (Principal result in results)
{
    cmb1.Items.Add(result.name);
}

您可以检查结果的长度。如果它为零,则做一件事,如果它大于零,则做另一件事。

您可以向类中添加count/length成员。

由于您正在循环遍历结果,因此在顶部引入布尔值不会对您造成任何伤害:

bool hasResults = false;
foreach (Principal result in results)
{
    hasResults = true;
    cmb1.Items.Add(result.name);
}
if (hasResults)
{
    return "yes, something was found";
}
else
{
    return "no users have been found at this time";
}
此代码可以缩短,但可读性应优先

如果您不需要循环(我知道您确实需要基于您发布的代码进行循环),您可以短路结果并排除布尔值:

foreach (Principal result in results)
{
    return "yes, something was found";
}
return "no users have been found at this time";

第二种解决方案适用于无法访问可枚举类上的Count属性的情况。从其他答案来看,在本例中,您确实可以访问此内容,但我将此示例作为假设保留。

如果上的MSDN文章是正确的,则会显示Count属性


if (results.Count > 0)
{
    foreach (Principal result in results)
    {
        cmb1.Items.Add(result.name);
    }
}
else
{
    // Hide contorls and/or show message
}

你应该这样做

DateTime dt = DateTime.Today;
DateTime less5dt = dt.AddDays(-5);

PrincipalSearchResult results = UserPrincipal.FindByLockoutTime(
    adPrincipalContext,
    dt,
    MatchType.GreaterThanOrEquals);

if (results.Count > 0)
{
    This.cmb1.Items.Clear();
    foreach (Principal result in results)
    {
        cmb1.Items.Add(result.name);
    }   
}
else
{
    //Considering you have a label called lblMessage
    lblMessage.Text = "no users have been found at this time"
    cmb1.Visible = false;
}

您不能只计算与cmb1关联的项目数吗?如果为0,则未找到任何内容,否则…我同意。在if语句中使用长度。假设MSDN文章是准确的,则没有暴露长度属性。但是Count属性的工作原理应该是一样的:一点也不好。第一个示例是,在循环的每个迭代中都浪费地指定true。首先,您最好评估Count属性的值。你的第二个例子根本没有意义。您已经破坏了将result.Name添加到组合框的功能,更不用说它只执行一次,那么为什么要将它放在循环中呢?最后,该方法不一定返回字符串句号。@senfo,感谢您的反馈。至少我终于找到了解释投票结果的理由。以下是我的想法:在第二个例子中,我明确指出“如果你不需要一个循环。”这是一个假设,它基于计数不可用的假设。当调用只返回IEnumerator的东西时,我使用这个特殊的解决方案。根据其他答案,我发现PrincipalReturnResult具有计数属性。。。我只是觉得不值得编辑。为了回答您对第一个场景的批评,没有定义方法签名。它很可能返回字符串。如果没有,可以修改为。OP从未定义消息的处理方式。。。我只是猜测。其次,为局部范围的布尔值赋值为true几乎不需要任何代价。检查其现有值或对布尔值执行逐位操作都会增加成本。事实上,调用Count甚至可能比赋值操作花费更多(取决于发生的迭代次数)。