ProgramaciónDesarrollador de aplicaciones (VB.NET)

Describe las formas de implementar preferencias de valores predeterminados (default values) para variables, propiedades y métodos en Visual Basic. ¿En qué casos su uso puede llevar a errores o comportamientos inesperados?

Supere entrevistas con el asistente de IA Hintsage

Respuesta.

En Visual Basic, los valores predeterminados se establecen para:

  • Variables — asignación al declarar (solo dentro de métodos).
  • Propiedades — a través de la autoinicialización o en el constructor.
  • Parámetros de métodos — mediante la palabra clave Optional y un inicializador.

Ejemplo para parámetros:

Public Sub LogMessage(message As String, Optional level As String = "INFO") Console.WriteLine($"[{level}]: {message}") End Sub ' Llamada sin el segundo argumento - será 'INFO' LogMessage("Test")

Ejemplo de autoinicialización de propiedades:

Public Property Status As String = "Undefined"

Particularidades:

  • Los parámetros opcionales solo se pueden especificar para los últimos en la lista de parámetros;
  • Los valores predeterminados deben ser conocidos en el momento de la compilación;
  • No se pueden usar tipos diferentes a los primitivos y cadenas (por ejemplo, clases) como valor predeterminado para un parámetro.

Pregunta con trampa.

¿Se puede establecer un valor predeterminado para un parámetro de tipo objeto (por ejemplo, clase) en VB.NET?

Respuesta: No, para los parámetros Optional solo se permiten expresiones constantes, es decir, tipos de datos primitivos y cadenas. Para los objetos, solo se puede usar el valor Nothing, y si se necesita un objeto, debe ser creado dentro del cuerpo del método:

Public Sub DoWork(Optional obj As SomeClass = Nothing) If obj Is Nothing Then obj = New SomeClass() End If ' ... End Sub

Ejemplos de errores reales debido al desconocimiento de los matices del tema.


Historia

Sistema financiero: Al agregar un nuevo parámetro con valor Optional, el desarrollador lo especificó no al final de la lista. Toda la llamada se compiló, pero los parámetros se desplazaron, lo que llevó a la transmisión incorrecta de valores.


Historia

Sistema de informes: Se utilizaron propiedades con autoinicialización (VB.NET 2010+), pero se olvidaron de considerar la lógica para sobrescribir valores desde el constructor, por lo que el valor predeterminado no se sobrescribía siempre correctamente.


Historia

Integración con API externa: En un intento de establecer un objeto como valor predeterminado para un parámetro Optional, se produjo un error de tiempo de compilación, lo que retrasó el lanzamiento y requirió una reestructuración masiva de las firmas de métodos.