Mejoras de VB y C# en VS 2010

Publicación del inglés original: miércoles, 19 de agosto a las 22:54 PST por Somasegar

La elección de un lenguaje de programación es una elección personal que cada programador tiene que hacer. Es similar a elegir el sabor de un helado: hay muy buenas elecciones por ahí pero su sabor favorito es una cuestión de preferencias personales.

En Visual Studio 2010 hemos realizado varias mejoras a nuestros dos lenguajes más populares, Visual Basic y C#, para dar a los programadores todas las herramientas necesarias para construir gran software independientemente del lenguaje que elijan.

Visual Basic

El equipo de Visual Basic se ha centrado en agregar características de productividad en el lenguaje para que los programadores puedan hacer más con menos líneas de código. La petición más común de nuestros clientes de Visual Basic ha sido la de quitar el carácter de subrayado ("_") que divide una instrucción de código en varias líneas. Visual Basic 10 presenta la continuación de línea implícita, que elimina la necesidad del carácter de subrayado en la mayoría de los casos.

    Function Filter(

                    ByVal customers As List(Of Customer),

                    ByVal orderCount As Integer

                   )

        Dimquery =

FromcIncustomers

          Where c.Orders.Count >

             orderCount

Selectc

Otra característica nueva de productividad es las propiedades implementadas automáticamente. Con las propiedades implementadas automáticamente, se pueden reemplazar las líneas repetitivas del código de implementación de la propiedad, con declaraciones de una sola línea. Hasta ahora, las declaraciones de propiedad a menudo tenían este aspecto:

Private _FavoriteFlavor As String = "Butter Pecan"

    Property FavoriteFlavor() As String

        Get

            Return _FavoriteFlavor

        End Get

        Set(ByVal value As String)

            _FavoriteFlavor = value

        End Set

    End Property

    Private _FlavorList As New List(Of Flavor)

    Property FlavorList() As List(Of Flavor)

        Get

            Return _FlavorList

        End Get

        Set(ByVal value As String)

          _FlavorList = value

        End Set

    End Property

Ahora las declaraciones de propiedad se pueden declarar de una manera mucho más sencilla:

    Property FavoriteFlavor As String = "Butter Pecan"

    Property FlavorList As New List(Of Flavor)

Los inicializadores de colección y literales de matriz son también más simples. Ahora se pueden inicializar colecciones cuando se están declarando y el tipo de literales de matriz lo infiere el compilador. 

    Dim toppings = New List(Of String) From

        {

         "sprinkles",

         "chocolate chips",

         "strawberries"

        }

    Dim cones = {"sugar cone", "waffle cone"} 'the type String() is inferred

Visual Basic 10.0 ahora tiene mejor soporte para funciones lambdas. Las funciones lambdas ahora pueden contener expresiones que no devuelvan un valor, como la palabra clave Sub indica a continuación:

Array.ForEach(toppings, Sub(n) Console.WriteLine(n))

A veces, le gustaría poder hacer algo más complejo dentro de una declaración lambda. Visual Basic 10.0 admite lambdas multilínea. El compilador infiere el parámetro y devuelve los tipos donde sea posible al igual que en lambdas regulares.

Dim doubleDown = Function(n As String)

If n.StartsWith("s") Then

Return "extra " & n

Else

Return n

End If

End Function

La interoperación con código de lenguaje dinámico como Python y Ruby se ha vuelto más sencilla en Visual Basic 10.0. Por ejemplo, el fragmento de código siguiente llama a un método definido en una biblioteca de Python "math.py": 

    Dim mathLib As Object = python.UseFile("math.py")

    Dim firstNumber = 44.2

    Dim secondNumber = 9.5

    mathLib.PowerOf(firstNumber, secondNumber)

C#

Las principales mejoras de C# 4.0 son la interoperabilidad con paradigmas de programación dinámica y la mejora de la programación en Office. La búsqueda dinámica, una nueva característica de C# 4.0, le permite utilizar y manipular un objeto desde IronPython, IronRuby, JScript, HTML DOM o una biblioteca estándar de .NET de la misma manera, independientemente de donde proceda. Otras mejoras del lenguaje como nombre y parámetros opcionales y compatibilidad mejorada para los clientes COM proporcionan a los programadores de C# que trabajan con la API de Office, la misma gran experiencia que han disfrutado los desarrolladores de Visual Basic.

Agregar la nueva palabra clave dinámica a su código le permite que su tipo se resuelva dinámicamente en tiempo de ejecución, en lugar de forma estática en tiempo de compilación. Esto le permite que los lenguajes dinámicos expongan sus objetos a C# de manera natural para un programador de C#: 

    dynamic dynamicObject = GetDynamicObjectFromRuby();

    dynamicObject.Foo(7);

    dynamicObject.Property = "Property value";

    dynamicObject[0] = "Indexed value";

Los parámetros del método opcional son familiares para los programadores de Visual Basic y C++ y ahora están disponibles para los programadores de C#. Los parámetros opcionales se declaran con un valor predeterminado en la firma de método, tal y como sigue:

private void CreateNewStudent(string name, int currentCredits = 0, int year = 1)

El método anterior puede llamarse de cualquiera de las maneras siguientes:

CreateNewStudent("Chloe");

CreateNewStudent("Zoe", 16);

CreateNewStudent("Joey", 40, 2);

Para omitir el valor del parámetro currentCredits pero especificar el parámetro de año, se puede utilizar la nueva característica de argumentos con nombre (resaltada). Todas las condiciones siguientes son también llamadas válidas:

CreateNewStudent("Jill", year: 2);

CreateNewStudent(name: "Bill", currentCredits: 30, year: 2);

CreateNewStudent("Will", currentCredits: 4);

 

Los argumentos con nombre también son una excelente forma de escribir llamadas autoexplicativas a los métodos existentes, incluso si no utilizan parámetros opcionales.

Obtenga más información

Conozca más acerca de las mejoras de los lenguajes de Visual Studio 2010 y descargue ejemplos en el sitio del futuro de VB (en inglés) y en el sitio del futuro de C# (en inglés). Para jugar con las nuevas características, descargue (en inglés) e instale Visual Studio Beta 1 y únase a la conversación (en inglés).

¡Namaste!