Porque el compilador no puede inferir el mejor tipo de los operandos del operador condicional.
Cuando se escribe condition ? a : b
, tiene que haber una conversión implícita del tipo de a
al tipo de b
, o con el tipo de b
al tipo de a
. El compilador inferirá el tipo de la expresión completa como el tipo de destino de esta conversión. El compilador nunca considera el hecho de que lo asigne a una variable de tipo decimal?
. En su caso, los tipos de a
y b
son decimal
y algunos tipos de referencia desconocidos o nulos. El compilador no puede adivinar a qué se refiere, por lo que necesita para ayudar a que:
decimal? compRetAmount = !string.IsNullOrEmpty(txtLineCompRetAmt.Text)
? decimal.Parse(txtLineCompRetAmt.Text.Replace(",",""))
: default(decimal?);
No somos lectores de la mente, ¿qué no funciona? –
Se llama el operador condicional, no el operador ternario –
@JakubKonecki aunque está claro. Siempre es bueno proporcionar la mayor cantidad de información posible. En este caso, un error de compilación –