Operadores Anulables

A pesar de que considero que tengo muy poca experiencia, considero que es tiempo que poco a poco regrese lo poco que he aprendido en mi carrera profesional a la sociedad y en especial sirva de apoyo a la gente que ocasionalmente visita este blog. Tengo la teoría de que un blog técnico es visitado por gente con nivel inferior al del autor (así que no aspiro a tener muchos visitantes) pero si en este caso algún desarrollador señior me visita y sabe que tengo algún error en mis entradas le agradecería que me lo hiciera ver en la sección de comentarios.

Dado que mi nivel es junior por el momento no esperen encontrar entradas con alto conocimiento si no que empezaremos con cosas interesantes pero no elevadas y es por eso que tocaré el tema de los operadores anulables.

Por defecto los tipos de datos numéricos y booleanos no pueden ser asignados nulos, sin embargo desde el origen de .NET 2.0  es posible que esto ocurra haciendo uso de los tipos anulables.

Para definir una variable anulable se hace uso del sufijo ? de la siguiente forma:

int? enteroAnulable = 10;

siendo esto únicamente válido para los tipos de valor y no los tipos de referencia.

Al hacer uso de los tipos anulables es necesario consultar el valor de la propiedad  Value para conocer el valor de esta variable y se puede consultar si tiene o no valor con la propiedad HasValue. 

Dado que un ejemplo suele ser mas enriquecedor propondré el siguiente caso. Supongamos que tenemos un método que manda a llamar a un procedimiento almacenado el cual solo te exige como único parámetro el idCiudad pero también te pide (como opcionales, ya que tiene establecido un valor por defecto en la firma del mismo para estos campos) los parámetros idUsuario y fechaActualizacion, esta seria una manera de hacer uso de los tipos anulables:

Firma del método:
public void actualizarCiudad(int idCiudad, int? idUsuario, DateTime? fechaActualizacion)

Llamada del método:
actualizarCiudad(10,null,DateTime.Now)

Cuerpo del método

if(idUsuario.hasValue)
{

  BD.CreateParameter("@idUsuario",idUsuario.Value)
}
if(fechaActualizacion.hasValue)
{

  BD.CreateParameter("@fechaActualizacion",fechaActualizacion.Value)
}

Como pueden ver el uso de los tipos anulables no es muy complicado y resulta bastante útil para evitar enviar cadenas vacías u otras cosas como -1 para valores enteros a un método cuando se requiera que estos datos no tengan valor alguno.

Espero que esta primera entrega haya sido de su agrado pero sobre todo les sirva en sus desarrollos actuales o futuros.
Agradezco sus comentarios de antemano.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s