2012-12-01 12 views
18

コードの簡単な情報は次のとおりです。コードは、文字列の束を取り、その中でconcantかどうかを決定する真ん中のifステートメントで、以下のようにそれらを連結します。問題はIf(Evaluation, "", "")がnullableであってはならず、リソースでなければならないと言っているという不満があります。評価が単にオブジェクトをチェックしてIsNot Nothingをチェックし、オブジェクトのプロパティがチェックされているインラインIF文を使用するvb.net

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について不平を言っています。何か案は?

'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 

答えて

38

Dim y As Double 
Dim d As String = "string1 *" & _ 
    "string2 *" & _ 
    If(y IsNot Nothing, " * sample text4", "") & _ 
    "string4 *" 

これとyのフラグを立てるれているものです。

は、私はそれがうまくいくかどうかを確認するだけで、次の試みているとVSがそれを拒否していることに留意すべきです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:ver 2008以降のVB.NETを使用している場合uldはまた、短絡機能を提供するので、これはさらに優れている。

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" 
+0

おかげで多くのIF(表現、truepart、falsepart)を示唆するために1 – Skindeep2366

+2

...私はそれが他の記事で言及見てきたように、このIIF書をよく読んで行く必要がありますね。 –

+0

@スティーブ私は正しく見える上記を試しましたが、あなたが私の編集を見れば、あなたはそれが何を言っているか見るでしょう。私の例では私はyに値を割り当てていないことを知っていることに留意すべきです。これが使用される実際のコードでは、yには値が割り当てられるか、または0.0のまま残ります。さらに、私のOPはあなたが投稿したのと全く同じものであることに注意してください。問題は見ていませんでした...なぜ私は式にVSフラグを取得していますか? – Skindeep2366