如果是运营商并继续

时间:2015-10-05 21:05:44

标签: vb.net if-statement foreach continue

我有简单的循环:

For Each Pla As Player In Game.Players
    Dim JustForTest As String
    JustForTest = If(Pla.Name,  Continue For)
    Console.WriteLine(JustForTest)
Next

如果玩家的名字什么都没有,它应该跳到下一个项目(或玩家),但是我在“继续”中收到了这个错误:

  

BC30201表达预期。

当然我可以这样使用:

For Each Pla As Player In Game.Players

    If Pla.Name = nothing then
    Continue For

    end if
    Console.WriteLine(Pla.Name)
Next

但我只是好奇我做错了什么,或者它是VB中的错误?

2 个答案:

答案 0 :(得分:2)

If Operator期望 Object 作为参数传递给它,而不是控制语句。它意味着与您在其他编程语言中找到的三元运算符等效。您正尝试将值Continue For分配给您的JustForTest变量 - 这是没有意义的。

这不是VB中的错误,只是你试图将操作符用于它不能做的事情。

答案 1 :(得分:-1)

与Nothing(C#中的null)进行比较的最佳方法是使用IsIsNot比较器,例如:If obj Is Nothing Then。如果你的Name属性应该是一个字符串,那么如果你使用像String.IsNullOrEmpty()这样的字符串函数会更好。

您的继续根据文档看起来是正确的。

https://msdn.microsoft.com/en-us/library/5z06z1kb.aspx#Anchor_4