Si bien puede usar la Valuepropiedad directamente según la respuesta de Leszek, probablemente usaría el operador condicional nulo junto con el operador de fusión nula:
string dateInUTCString =
date?.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ", CultureInfo.InvariantCulture)
?? "";
Aquí ?.solo dará como resultado un valor nulo si datees nulo, y el ??operador proporcionará un valor predeterminado si el resultado de la date?.ToUniversalTime().ToString(...)llamada es nulo (lo que solo sucedería si datees nulo).
Tenga en cuenta que realmente desea especificar la cultura invariante para evitar obtener resultados inesperados cuando la cultura del hilo actual no utiliza el calendario gregoriano, y no necesita citar todos esos literales en la cadena de formato. Ciertamente funciona cuando lo haces, pero es más difícil de leer IMO.
Si no le importa cuánta precisión se expresa en la cadena, puede simplificar el código utilizando la cadena de formato estándar "O" :
string dateInUTCString = date?.ToUniversalTime().ToString("O") ?? "";
En ese punto no necesita especificar, CultureInfo.InvariantCultureya que siempre lo usa "O".
.ToString("o")?