Ustawienie parametru na DBNull.Value za pomocą składni trójskładnikowej daje błąd?

Mam następujący bit kodu, aby ustawić parametr, który będzie używany w instrukcji INSERT, aby ustawić kolumnę VARCHAR w bazie danych SQL Server. Mój obiekt wartości (o nazwie ilo) ma właściwość o nazwie Description, która zostaje zainicjowana na String.Empty, a następnie albo zostaje ustawiona na jakąś wartość odczytaną z XML, albo jeśli ten element XML jest pusty, pozostaje tylko String.Empty.

Więc podczas wstawiania do bazy danych, jeśli właściwość jest nadal ustawiona na String.Empty, chciałbym, aby wstawiła ona wartość null.

database.AddInParameter(cmd, "@description", DbType.String, 
                           (ilo.Description.Equals(string.Empty)) ?
                            DBNull.Value :
                            ilo.Description);

Więc zasadniczo mówię, jeśli ilo.Description równa się string.empty, ustaw parametr na DBNull.Value, w przeciwnym razie ustaw go na ilo.Description.

Daje to następujący błąd w Visual Studio ...

Błąd 141 Nie można określić typu wyrażenia warunkowego, ponieważ nie ma niejawnej konwersji między „System.DBNull” i „string”

Czemu?

Ciekawostką jest to, że mogę wykonać następujące czynności bez żadnego błędu, który powinien być dokładnie tym samym, co użycie wbudowanej składni warunkowej jak powyżej!?!

if(ilo.Description.Equals(string.Empty))
{
    database.AddInParameter(cmd, "@description", DbType.String, DBNull.Value);
}
else
{
    database.AddInParameter(cmd, "@description", DbType.String, ilo.Description);
}

Przeszukałem inne posty i znalazłem poniżej, ale tak naprawdę nie odpowiada na moje pytanie.

Sposób EntLib na powiązanie wartości „Null” z parametrem

Bardziej interesuje mnie DLACZEGO, ponieważ oczywistym obejściem jest użycie instrukcji if / else zamiast składni wbudowanej (trójskładnikowej)?

Na tym łączu znajduje się coś w rodzaju odpowiedzi, ale chciałbym uzyskać lepsze wyjaśnienie, ponieważ wydaje mi się, że to BS nie działa; Nazwałbym to bugiem!

http://msdn.microsoft.com/en-us/library/ty67wk28.aspx

questionAnswers(4)

yourAnswerToTheQuestion