Saltar al contenido

Trabajando con variables (parte 1/3) : Inicialización de datos básicos en C#

2 abril, 2012

Este tema aunque muy básico se hace necesario puesto que muchas veces el desarrollador novato o intermedio a veces no logra el comportamiento esperado de su aplicación por fallas en el procedimiento de inicialización de variables. Para ilustrar esto partamos de un ejemplo cotidiano (tipo problema de aritmética de 2do de primaria).

Pablo recibe $100 para comprar golosinas, va a la tienda y compra un dulce que cuesta $50. ¿cúanto dinero tiene Pablo al salir de la tienda?

Muchos podrán decir que Pablo sale de la tienda con $50 y parece obvio, pero se han puesto a pensar que la condición fundamental para responder el problema es cuanto tenía Pablo antes de entrar a la tienda, Digamos que cargaba $200 antes de entrar, así que salió con $250.

Esto nos sucede muchas veces al desarrollar aplicaciones, omitimos esta parte de inicialización, generando errores de compilación (que se derivan en reprocesos de desarrollo), o peor aún en errores y excepciones en tiempo de ejecución.

Vamos entonces al grano, digamos que vamos a codificar una aplicación que muestre el problema planteado a continuación:

using System;

namespace Pablito
{
    class Program
    {
        static void Main(string[] args)
        {
            //en primer lugar se define una variable entera para el dinero que carga pablito
            int dineroPablito;
            //el problema nos dice que el dinero de pablito se incrementa en 100
            dineroPablito = dineroPablito + 100;
            // luego el problema dice que gasta 50 en una golosina
            dineroPablito = dineroPablito - 50;
            // Se muestra la solución al problema
            Console.WriteLine("pablito al final queda con $"+dineroPablito);
        }
    }
}

Al intentar compilar este código se obtiene un error:

Uso de la variable local no asignada ‘dineroPablito’

Lo cual indica que debemos asignar un valor (o inicializar) la variable 'dineroPablito' para lo cual tenemos dos opciones, la primera es usando la palabra clave new de la siguiente forma:

using System;

namespace Pablito
{
    class Program
    {
        static void Main(string[] args)
        {
            //en primer lugar se define una variable entera para el dinero que carga pablito y 
            //se asigna el valor por defecto
            int dineroPablito = new int();
            //el problema nos dice que el dinero de pablito se incrementa en 100
            dineroPablito = dineroPablito + 100;
            // luego el problema dice que gasta 50 en una golosina
            dineroPablito = dineroPablito - 50;
            // Se muestra la solución al problema
            Console.WriteLine("pablito al final queda con $" + dineroPablito);
        }
    }
}

Esta opción es válida cuando se desea asignar la variable a su valor por defecto (en el caso de int es 0) pero si se desea iniciar la variable con otro valor lo conveniente es hacer la asignación de forma explícita, es decir:

using System;

namespace Pablito
{
    class Program
    {
        static void Main(string[] args)
        {
            //en primer lugar se define una variable entera para el dinero que carga pablito
            //y se asigna un valor (para este caso 50)
            int dineroPablito = 50;
            //el problema nos dice que el dinero de pablito se incrementa en 100
            dineroPablito = dineroPablito + 100;
            // luego el problema dice que gasta 50 en una golosina
            dineroPablito = dineroPablito - 50;
            // Se muestra la solución al problema
            Console.WriteLine("pablito al final queda con $" + dineroPablito);
        }
    }
}

Este segundo método permite asignar valores iniciales a las variables.

Ya para concluir hay que tener en cuenta que el valor por defecto para los tipos de datos numéricos es 0 para los datos enteros y 0.0 para los datos de coma flotante; para los datos booleanos es false (Por lo cual recomiendo cuidado en el uso de estas variables), para String es una cadena vacía (o sea “”) y para objetos Null (a menos que se haya declarado explícitamente otra cosa en el constructor de la clase)

From → Uncategorized

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 )

Google photo

Estás comentando usando tu cuenta de Google. 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 )

Conectando a %s

A %d blogueros les gusta esto: