[C#] Operatorul ?? nu acceptă variabile de tipuri diferite de o parte și de alta a sa.

Poate ați întâlnit mesajul acesta de eroare: „Operator ‘??’ cannot be applied to operands of type ‘int?’ and ‘DBNull’”.
    int? x = 8; // nullable type prin ?
    // Acest parametru SQL poate fi si NULL in baza de date, dar trimitand null la AddWithValue sterge parametrul, deci folosesc DBNull.Value.
    cmd.Parameters.AddWithValue(„@x”,
        x ?? DBNull.Value); // Da eroare de sintaxa.

    object y = x ?? DBNull.Value; // La fel si aici.

Fiindcă expresiile „null coalesce” (cele cu ??) nu pot avea tipuri diferite in stanga lui ?? si in dreapta lui ??, folosim o clauza if:

    if (x.HasValue) // conditie echivalenta cu (x != null)
    { 
        cmd.Parameters.AddWithValue(„@x”, x); 
    } 
    else 
    { 
        cmd.Parameters.AddWithValue(„@x”, DBNull.Value); 
    } 

Capturi de ecran:

Inspirație de aici.

Lasă un răspuns

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare /  Schimbă )

Fotografie Google

Comentezi folosind contul tău Google. Dezautentificare /  Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare /  Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare /  Schimbă )

Conectare la %s

%d blogeri au apreciat: