Breve información sobre el código es el siguiente. El código tiene un montón de cadenas y concants de la siguiente manera con una declaración de si en el medio que decida si concant o no en uno de ellos. El problema es el If(Evaluation, "", "") se queja diciendo que no deben aceptar valores null o debe ser un recurso.. ¿Cómo puedo evitar esto, cuando la Evaluación simplemente comprueba un objeto para asegurarse de que IsNot Nada y también que una propiedad en el objeto es comprobar como sigue:

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 se está quejando de la applyValue. Alguna Idea?

Debe señalarse que he intentado lo siguiente para ver si iba a trabajar y VS es la rechaza:

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

Esto es lo que está decayendo en el y con:

  '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
InformationsquelleAutor Skindeep2366 | 2012-12-01

1 Comentario

  1. 41

    Utilizar el IIF ternario evaluador de expresiones

    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: Si utiliza VB.NET a partir de la versión 2008 en adelante puede utilizar también el

    IF(expression,truepart,falsepart)

    y esto es aún mejor, ya que proporciona el corto-circuito de la funcionalidad.

    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"
    • Muchas gracias creo que debería ir a leer sobre este IIF declaración como he visto en otros posts…
    • +1 por lo que sugiere IF(expresión,truepart,falsepart).
    • He probado los de arriba que se ve bien pero si te fijas en mi edición usted podrá ver lo que se está diciendo.. cabe señalar que sé que en mi ejemplo yo no tiene asignado ningún valor para y. En el código real, donde este se utiliza y se le asigna un valor o sigue siendo 0.0 Alguna idea??? Además, debe señalarse que mi OP fue exactamente lo mismo que has publicado, el problema no era siquiera miró… ¿por Qué tengo una VS de la bandera en la expresión???
    • Lo siento por la tarde el comentario, pero y es un tipo de valor (no se aceptan valores null) y el compilador de vb se queja acerca de IsNot utilizado en contra de un tipo de valor, mientras que no tiene nada que decir cuando se utiliza un tipo de referencia como ApplyValue.

Dejar respuesta

Please enter your comment!
Please enter your name here