Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

337
Visualizações
¿Qué significa un signo de interrogación después de un tipo de referencia en C#?

¿Cuál es el propósito del signo de interrogación después del tipo de parámetro que es un tipo de referencia?

por ejemplo, uno de los constructores de OverflowException contiene una string? y Exception? parámetros:

 public OverflowException(string? message, Exception? innerException);

No veo el punto de marcarlos como anulables, ya que no son tipos de valor, por lo que son anulables de forma predeterminada.

¿Cual es el punto? ¿Significa algo diferente?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

En C# 8.0, se introdujeron tipos de referencia que aceptan valores NULL ; esto le permite marcar tipos de referencia como que aceptan valores NULL agregando ? al nombre del tipo.

En el análisis de estado nulo , el código se verifica estáticamente para realizar un seguimiento del estado nulo de las referencias. Este análisis puede resultar en uno de los 2 estados siguientes:

  • not-null - la variable tiene un valor no nulo

  • quizás-null - la variable puede ser nula o no nula; el analizador no puede determinar con certeza

Esto es útil ya que ayuda al compilador a proporcionar advertencias para ayudarlo a escribir código menos propenso a NullReferenceExceptions y más consumible por otras API .

Por ejemplo, el compilador emitirá una advertencia para lo siguiente.

 #nullable enable ... string message = null; // Warning - CS8602 Dereference of a possibly null reference Console.WriteLine(message.Length);

Esto se debe a que, dado message se estableció en nulo, su estado se rastreó como quizás nulo . Esto arroja una advertencia para alertarlo en caso de que esté intentando acceder a las propiedades de un objeto nulo. Y sí, lo eres.

Aquí hay un ejemplo diferente:

 #nullable enable ... string message = "The quick brown fox jumps over the lazy dog"; // No warning Console.WriteLine(message.Length);

Dado que se sabe que el message no es nulo , su estado se establece en no nulo . El compilador no generará una advertencia ya que sabe que puede desreferenciar la variable de manera segura. Definitivamente no es nulo.

Alternativamente, también puede decidir decirle al mundo que algunas variables pueden ser nulas :)

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda