为什么这不会作为IIF功能,但作为IF声明?

Cur*_*urt 0 vb.net asp.net iif-function if-statement asp.net-3.5

以下作品:

If 1=1
    rdoYes.checked = True
Else
    rdoNo.checked = True
End If
Run Code Online (Sandbox Code Playgroud)

但是,以下不起作用:

IIF(1=1, rdoYes.checked = True, rdoNo.checked = True)
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

谢谢!

Dan*_*Tao 7

它确实"有效"; 它只是没有做你想要的.

IIf在VB.NET是一个函数(不使用它,永远,顺便说一句),这需要这些参数:

  1. Boolean要检查的条件
  2. 一个Object返回如果条件True
  3. Object如果条件是,则返回不同的False

在您的使用中,您的情况是1 = 1; 那么你的其他两个参数是rdoYes.Checked = TruerdoNo.Checked = True,无论Boolean从VB编译器的角度表达式(所以,真的,他们等同于简单的rdoYes.CheckedrdoNo.Checked).

请记住,在VB.NET中,=符号只是一个赋值,如果它在它自己的行上.这就是编译器如何区分诸如x = 5和之类的语句If x = 5 Then.

这与你的问题没有直接关系,但是你也应该知道这个问题IIf已被弃用,而你几乎总是喜欢这样做If:

' Let us just suppose it made sense to write this: '
' Notice the If instead of IIf. '
Dim result = If(1 = 1, rdoYes.Checked, rdoNo.Checked)
Run Code Online (Sandbox Code Playgroud)