[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.

Niciun comentariu:

Trimiteți un comentariu