Использование оператора inline IF vb.net
Краткая информация о коде выглядит следующим образом. Код принимает кучу строк и их конкатентность следующим образом с выражением if в середине, которое решает, следует ли конкатентно или нет на одном из них. Проблема заключается в том, что If(Evaluation, "", "")
жалуется на то, что он не должен быть нулевым или должен быть ресурсом. Как мне обойти это, когда Evaluation просто проверяет объект, чтобы убедиться, что IsNot Nothing, а также что свойство в объекте проверяется следующим образом:
Dim R as string = stringA & " * sample text" & _
stringB & " * sample text2" & _
stringC & " * sameple text3" & _
If(ApplyValue IsNot Nothing AndAlso ApplyValue.CheckedBox Then ,StringD & " * sample text4" & _
, NOTHING)
stringE & " * sample text5"
VS жалуется на applyValue. Любые идеи?
Следует отметить, что я попробовал следующее, чтобы увидеть, будет ли это работать, и VS отклоняет его:
Dim y As Double
Dim d As String = "string1 *" & _
"string2 *" & _
If(y IsNot Nothing, " * sample text4", "") & _
"string4 *"
Это то, что он помещает y с:
'IsNot' requires operands that have reference types, but this operand has the value type 'Double'. C:\Users\Skindeep\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 13 16 WindowsApplication1
Ответы
Ответ 1
Использовать анализатор термальных выражений IIF
Dim R as string = stringA & " * sample text" & _
stringB & " * sample text2" & _
stringC & " * sameple text3" & _
IIf(ApplyValue IsNot Nothing AndAlso ApplyValue.CheckedBox, StringD & " * sample text4", "") & _
stringE & " * sample text5"
EDIT: если вы используете VB.NET с версии 2008 года, вы также можете использовать
IF(expression,truepart,falsepart)
и это даже лучше, потому что оно обеспечивает функцию короткого замыкания.
Dim R as string = stringA & " * sample text" & _
stringB & " * sample text2" & _
stringC & " * sameple text3" & _
If(ApplyValue IsNot Nothing AndAlso ApplyValue.CheckedBox, StringD & " * sample text4", "") & _
stringE & " * sample text5"