如果当前变量为null,如何跳到下一个项目

时间:2011-12-01 21:29:12

标签: c# parsing list

我有一个函数可以检索设备名称列表,然后存储在变量中。然后,下一步是每行使用1个设备名称获取信息,并继续运行直到循环完成。

 String text = "";
        String errors = "";

    for (int i = 0; i < collection.Result.Count; i++)
    {
        deviceNames += collection.Result[i].DeviceName + Environment.NewLine;

        getvirtuals.Location = deviceNames;
        var virtuals = client.GetKnownVirtuals(getvirtuals, LtmKeyType.VirtualAddressPort);

        if (virtuals.Result == null)
        {
            i++;
            getvirtuals.Location = deviceNames;

        for (int v = 0; v < virtuals.Result.Count; v++)
                {
                try
                {
                    LtmKey virtualKey = new LtmKey();
                    virtualKey.Location = virtuals.Result[v].Location;
                    virtualKey.LocationType = virtuals.Result[v].LocationType;
                    virtualKey.Key = virtuals.Result[v].Key;
                    virtualKey.KeyType = LtmKeyType.VirtualAddressPort;

                    virtualKey.AdminGroup = admingroupComboBox.Text;


                    var memberStatus = client.GetMemberStatus(virtualKey);


                    for (int j = 0; j < memberStatus.Result.Count; j++)
                    {
                        VirtualMemberStatus status = memberStatus.Result[j];
                        text += String.Format("{5},{4},{0},{1},{2},{3}" + Environment.NewLine, status.Member.Address, status.Member.Port, status.EffectiveStatus, status.DesiredStatus, virtualKey.Key.Replace(":", ","), DateTime.UtcNow);
                        toolStripProgressBar1.PerformStep();
                    }
                }
                catch
                {
                    errors += String.Format("{0} Error Code: 2, Error occurred, check device name (case senstive) and admin group. This error may also occur due to connection loss, try again." + Environment.NewLine, DateTime.UtcNow);
                }
            }
            this.allResultsBox.Text = text;

        getallstatusButton.Enabled = true;
    }

    }

我遇到的问题是,如果virtuals为空,则工具崩溃,而我想要做的是virtuals = null我想要移动到列表中的下一个项目。我尝试了if statement,但它没有按照计划的方式工作,它仍然返回为null。

5 个答案:

答案 0 :(得分:8)

这开始时似乎是一个问题:

if (virtuals.Result == null)
{
    i++;
    getvirtuals.Location = deviceNames;

    for (int v = 0; v < virtuals.Result.Count; v++)

    ...

如果virtuals.Result为空,您希望virtuals.Result.Count如何工作?我怀疑你的意思是:

if (virtuals.Result != null)

但是,我怀疑你真的只是想要:

// Keep going with the next iteration of the for loop
if (virtuals == null || virtuals.Results == null)
{
    continue;
}

答案 1 :(得分:2)

如果你想要的话,如果virtuals为null,那么你想要进入下一个循环迭代 if (virtuals == null) continue;

答案 2 :(得分:2)

如何插入:

  if(virtuals == null)
     continue;

后面

  var virtuals = client.GetKnownVirtuals(getvirtuals, LtmKeyType.VirtualAddressPort);

答案 3 :(得分:0)

您是否尝试更改该行:

    if (virtuals.Result == null)

为:

    if ((virtuals != null) && (virtuals.Result != null))

如果这不能解决您的问题,那么您需要指出其他错误是什么。

答案 4 :(得分:-1)

if (virtuals.Result == null)

制作本

if (virtuals == null)