2011-12-01 39 views
1

我有一个函数,用于检索设备名称列表并存储在变量中。然后下一步是使用每行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,但它没有按照计划的方式工作,它仍然返回为空。

回答

6

嗯,这似乎是一个问题下手:

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; 
} 
+0

你最后的例子就像一个魅力!谢谢 – KPS

2

如果你想要的是去下一个循环迭代,如果那么想要 虚函数为空if (virtuals == null) continue;

-1
if (virtuals.Result == null) 

使这个

if (virtuals == null) 
2

如何只插入:

行后
if(virtuals == null) 
    continue; 

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

您是否尝试转产:

if (virtuals.Result == null) 

到:

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

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