Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

255
Vistas
¿Cómo se supone que los atributos opcionales y las referencias anulables funcionan juntas?

Soy un gran admirador de las referencias anulables de C# y las habilitamos en todos nuestros nuevos proyectos. Recientemente, estaba revisando un PR de un compañero de trabajo y descubrí que el atributo [Opcional] se usaba junto al parámetro de referencia sin especificar un valor predeterminado. Esto significaría que estamos rompiendo la "restricción de referencia anulable" ya que el valor predeterminado para el argumento de la función sería nulo, aunque el argumento no esté marcado como anulable. Por favor, vea el código de ejemplo a continuación:

 class Program { internal class Data { internal int Count { get; set; } = 3; } static void Main(string[] args) { BadUse(); GoodUse(); } static void BadUse([Optional] Data data) => Console.WriteLine($"Data: ${data.Count}"); static void BadUse2([Optional, DefaultParameterValue(null)] Data data) => Console.WriteLine($"Data: ${data.Count}"); static void GoodUse(Data? data = null) => Console.WriteLine($"Data: ${data?.Count}"); }

Como puede ver, el método BadUse anterior es incorrecto y provocará una excepción de referencia nula sin ninguna advertencia ni error de compilación. Naturalmente, usamos el patrón de argumento opcional más legible como en GoodUse . Me pregunto si esto es un error en el compilador de C# o me falta algo aquí. Esperaría ver un error de compilación o al menos alguna advertencia. Tenga en cuenta que cuando se usa el atributo DefaultParameterValue en BadUse2 , obtenemos la esperada "Desreferencia CS8602 de una referencia posiblemente nula".

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda