domingo, 21 de febrero de 2010

Asignación implícita de tipos en Visual C#

En ocasiones nos podemos ver enfrentados a la problemática de no saber de qué tipo debemos declarar una variable, parece raro, pero no lo es y te diré porque. Primero revisemos el siguiente código:

protected void Button1_Click(object sender, EventArgs e)
        {
            Int32 departmentID = Convert.ToInt32(departmentList.SelectedValue);

            var courseInfo = from c in schoolContext.Course
                             where c.Department.DepartmentID == departmentID
                             select new
                             {
                                 CourseID = c.CourseID,
                                 CourseTitle = c.Title,
                                 CourseCredits = c.Credits
                             };
            
            foreach (var course in courseInfo)
            {
                Response.Write("<br>ID: " + course.CourseID + "<br>Title:" + course.CourseTitle + "<br>Credits:" + course.CourseCredits);
            }
        }

El resultado de courseInfo es una colección de tipos anónimos y solamente el compilador puede tener acceso al nombre de ese tipo y es aquí entonces en donde usaremos var y lógicamente la variable course en foreach también debe tener tipo implícito.

Ahora si revisamos este segundo ejemplo, inmediatamente podemos deducir que el tipo de la variable courseInfo para su resultado es IEnumerable, pero si usamos var también estará bien. La variable course en foreach también la definimos como string.

protected void Button2_Click(object sender, EventArgs e)
        {
            string[] Courses = { "Ingenieria", "Ingles", "Economia", "Matematicas" };
            IEnumerable<string> courseInfo = from name in Courses
                              where name[0] == 'I'
                              select name;

            foreach (string course in courseInfo)
            {
                Response.Write("<br>Course :" + course);
            }
        }

Entonces en resumen, a las variables locales se les puede asignar un "tipo" deducido var en lugar de un tipo explícito. La palabra clave var indica al compilador que deduzca el tipo de la variable a partir de la expresión que se encuentra en el lado derecho de la instrucción de inicialización. El tipo deducido puede ser un tipo integrado, un tipo anónimo, un tipo definido por el usuario o un tipo definido en la biblioteca de clases de .NET Framework.

Saludos, Toby

No hay comentarios:

Publicar un comentario

Entradas populares