domingo, 26 de octubre de 2008

Nothing y DBNull.Value en Visual Basic.NET

Que diferencia hay entre Nothing y DBNull.value???

Mucha gente está bastante confundida acerca de este tema y no son pocos ciertamente los que lo están. Vamos a tratar de esclarecer en forma rápida y concreta este tema.

La palabra clave Nothing sirve para especificar o asignar que un variable de tipo referencia no está apuntando a nada, no está instanciado objeto alguno para dicha variable.

DBNull.Value en cambio es un objeto que se usa para indicar que un tipo (type) de un campo de base de datos es de valor nulo (Null).

Yo creo que esta común confusión tiene su origen en las versiones anteriores de VB, ya que contaba con un sinnumero medio de especificar estados de variables (nothing, empty, null, ismissing, "", etc).


jueves, 2 de octubre de 2008

Casteo Dinámico de tipos (type)

Estaba haciendo un código con un toque de reflection.
Necesitaba un casteo entre tipos que se iban a resolver solamente en tiempo de ejecución, de modo que el casteo común y corriente no me servía. Después de dar un par de vueltas fuí a los mas simple, la clase Convert y su método ChangeType, tal como aparece a continuación.

string tipo = "System.Int16";
object objeto1 = "345";
object objeto2 = Convert.ChangeType(objeto1, Type.GetType(tipo));
Type t = objeto2.GetType(); // y aca tengo el tipo del system.int16 nuevamente

Comentarios:
objeto.GetType devuelve el tipo de un objeto existente.
gettype(type) devuelve el tipo de un tipo indicado especificamente
y
Type.GetType(String) devuelve el tipo que le indicamos en el string.