我有简单的循环:
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中的错误?
答案 0 :(得分:2)
If Operator
期望 Object 作为参数传递给它,而不是控制语句。它意味着与您在其他编程语言中找到的三元运算符等效。您正尝试将值Continue For
分配给您的JustForTest
变量 - 这是没有意义的。
这不是VB中的错误,只是你试图将操作符用于它不能做的事情。
答案 1 :(得分:-1)
与Nothing(C#中的null)进行比较的最佳方法是使用Is
或IsNot
比较器,例如:If obj Is Nothing Then
。如果你的Name属性应该是一个字符串,那么如果你使用像String.IsNullOrEmpty()
这样的字符串函数会更好。
您的继续根据文档看起来是正确的。
https://msdn.microsoft.com/en-us/library/5z06z1kb.aspx#Anchor_4