Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

249
Views
¿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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!