2012-12-01 13 views
18

Krótka informacja na temat kodu jest następująca. Kod pobiera kilka ciągów znaków i konstatuje je następująco za pomocą instrukcji if w środku, która decyduje o tym, czy należy się skupić, czy nie na jednym z nich. Problem polega na tym, że If(Evaluation, "", "") narzeka, że ​​nie może być zniesiony lub musi być zasobem. Jak mogę obejść ten problem, gdy Ocena po prostu sprawdza obiekt, aby upewnić się, że nie ma nic, a także czy właściwość w obiekcie jest sprawdzana w następujący sposób:Korzystanie z wbudowanego polecenia 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 narzeka na wartość applyValue. Jakieś pomysły?

Należy zauważyć, że próbowałem następujących po prostu sprawdzić, czy to działa i VS odrzuca go:

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

To co to jest słabnącym y z:

'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 

Odpowiedz

38

użyj IIF trójskładnikowych wyrażeń

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: Jeśli korzystasz z VB.NET 2008 ver naprzód ty współ Używany jest także dysk twardy i jest on jeszcze lepszy, ponieważ zapewnia funkcję zwarcia.

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

Dzięki znacznie Chyba powinienem iść przeczytać na tym stwierdzeniem IIF jak widziałem to wspomniano w innych postach ... – Skindeep2366

+2

+1 za sugerowanie if (wyrażenie, truepart, falsepart). –

+0

@Steve Próbowałem powyższego, który wygląda dobrze, ale jeśli spojrzysz na moją edycję zobaczysz, co mówi. Należy zauważyć, że wiem, że w moim przykładzie nie przypisałem żadnej wartości y. W rzeczywistym kodzie, w którym jest używany, y ma przypisaną wartość lub pozostaje 0.0 Wszelkie pomysły ??? Ponadto należy zauważyć, że mój OP był dokładnie tym samym, co napisałeś, problem nie był nawet spojrzał na ... Dlaczego otrzymuję flagę VS na wyrażenie? – Skindeep2366