Estoy tratando de utilizar el operador condicional, pero estoy quedarse atascado en el tipo que piensa que el resultado debería ser.resultado Tipo con el operador condicional en C#
A continuación se muestra un ejemplo que he ideado para mostrar el problema que estoy teniendo:
class Program
{
public static void OutputDateTime(DateTime? datetime)
{
Console.WriteLine(datetime);
}
public static bool IsDateTimeHappy(DateTime datetime)
{
if (DateTime.Compare(datetime, DateTime.Parse("1/1")) == 0)
return true;
return false;
}
static void Main(string[] args)
{
DateTime myDateTime = DateTime.Now;
OutputDateTime(IsDateTimeHappy(myDateTime) ? null : myDateTime);
Console.ReadLine(); ^
} |
} |
// This line has the compile issue ---------------+
En la línea se ha indicado anteriormente, me sale el siguiente error de compilación:
Tipo de expresión condicional no puede se determinará porque no hay una conversión implícita entre '< null>' y 'System.DateTime'
Estoy confundido porque el parámetro es un tipo que admite nulos (DateTime?). ¿Por qué necesita convertirse en absoluto? Si es nulo, úsalo, si es una fecha y luego usa eso.
que estaba bajo la impresión de que:
condition ? first_expression : second_expression;
fue el mismo que:
if (condition)
first_expression;
else
second_expression;
Claramente este no es el caso. ¿Cuál es el razonamiento detrás de esto?
(NOTA:.?. Yo sé que si hago "MyDateTime" DateTime anulable entonces todo funcionará bien, pero ¿por qué lo necesito
Como dije anteriormente este es un ejemplo artificial En mi ejemplo real " MyDateTime" es un valor asignado de datos que no se pueden hacer anulable.)
posible duplicado de [Asignación de operador condicional con Nullable tipos?] (Http://stackoverflow.com/questions/75746/conditional-operator-assignment-with-nullablevalue-types) –
nawfal
posible duplicado de [tipos anulables y el operador ternario: ¿por qué es \ '? 10: null \ 'prohibited?] (Http://stackoverflow.com/questions/858080/nullable-types-and-the-ternary-operator-why-is-10-null-forbidden) –