26

コードの簡単な情報は次のとおりです。このコードは一連の文字列を受け取り、次のようにそれらを連結します。中間に if ステートメントを使用して、そのうちの 1 つを連結するかどうかを決定します。問題は、If(Evaluation, "", "")null 可能であってはならない、またはリソースである必要があると不平を言っていることです。評価が単にオブジェクトをチェックして 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
4

1 に答える 1

52

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:2008年以降のVB.NETを使用する場合は、

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"
于 2012-12-01T16:23:19.677 に答える