Это «работает»;он просто не делает то, что вы хотите.
IIf
в VB.NET - это функция ( не используйте ее, когда-либо ,кстати ), который принимает следующие параметры:
- A
Boolean
условие для проверки - An
Object
для возврата, если условие True
- Другой
Object
для возврата, если условие False
В вашем случае ваше состояние 1 = 1
;тогда ваши два других параметра - rdoYes.Checked = True
и rdoNo.Checked = True
, оба выражения Boolean
с точки зрения компилятора VB (так что, на самом деле, они эквивалентны более простым rdoYes.Checked
и rdoNo.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)