Desde C# 8.0, el estándar es una variable no anulable de forma predeterminada. Ref1
Pero en el caso de genéricos como este:
public static T PerfomIO<T>(Func<T> function, T defaultValue = default) { try { return function(); } catch (IOException) { } return defaultValue; }¿Cómo deshacerse del error de compilación "CS8601 Posible asignación de referencia nula" que ocurre cuando intento pasar "predeterminado"?
Quiero apoyar el valor nulo aquí. No quiero desactivar el mensaje de error. Quiero programarlo como debe ser.
Intento agregar Nullable de muchas maneras sin éxito. Intento [AllowNull] sin éxito
Encontré algunos trucos, aunque no tenía idea de por qué el proyecto se vio obligado a realizar una "verificación anulable" (encontrado y detalles a continuación). Busqué en .csproj, .sln y en otros lugares y no encontré ningún parámetro que pudiera forzar la verificación nula.
Encontré 2 formas de solucionar el problema que tenía:
Solución 1: puede agregar la siguiente línea al comienzo de su archivo .cs:
#nullable deshabilitar
Solución 2: ¡Cambie el parámetro de default a default! donde el ! le dice al compilador que no considere la verificación anulable.
¡Actualmente uso default! .
También solo como referencia, si su proyecto fuerza la verificación nula pero no puede encontrar la opción en su proyecto o en su solución, busque este artículo: Personalice su compilación , quizás descubra por qué se fuerza la verificación nula. (Todo nuevo desde 2019).