novedades de visual basic 2008

38
Novedades de Visual Basic 2008 También conocido como Visual Basic 9.0 (VB9) Guillermo 'guille' Som [email protected]

Upload: comunidad-unfv

Post on 11-Apr-2015

5.330 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Novedades de Visual Basic 2008

Novedades de Visual Basic 2008También conocido como Visual Basic 9.0 (VB9)

Guillermo 'guille' Som

[email protected]

Page 2: Novedades de Visual Basic 2008

Agenda

Novedades de Visual Basic 2008 (VB 9.0)

• Novedades de VB 9.0

• Características generales

• LINQ

• XML

Page 3: Novedades de Visual Basic 2008

Novedades de VB 9.0

Características generales

• Ensamblados amigos

• Relajación de delegados

• Varianza y contravarianza

• Agilidad del runtime

• Operador ternario

• Tipos anulables

• Métodos parciales

Page 4: Novedades de Visual Basic 2008

Novedades de VB 9.0

Ensamblados amigos

• Acceder a los tipos y demás código que están

declarados como Friend en otro ensamblado

Imports System.Runtime.CompilerServices

<Assembly: InternalsVisibleTo("Nombre_del_ensamblado_amigo, PublicKey=la clave pública")>

Page 5: Novedades de Visual Basic 2008

Novedades de VB 9.0

Relajación de delegados

• Usar tipos de datos de uno base

• Esto ya estaba en C# 2.0

• Varianza: Para el tipo devuelto e incluso no

devolver nada

• Contravarianza: Para los parámetros

Private Sub Button1_Click( _

ByVal sender As Object, _

ByVal e As Object) _

Handles Button1.Click

Page 6: Novedades de Visual Basic 2008

Novedades de VB 9.0

• En Visual Basic la relajación puede llegar al

máximo, incluso sin necesidad de usar un tipo

base

Private Sub Button2_Click() Handles Button2.Click

Page 7: Novedades de Visual Basic 2008

Novedades de VB 9.0

Agilidad del runtime

• Permite compilar sin necesidad de usar la librería

Microsoft.VisualBasic.dll

• Solo desde la línea de comandos usando:

/vbruntime[+|-]

/vbruntime:<file>

• Esto impedirá el uso de My, los Module y otras

características especiales de VB

Page 8: Novedades de Visual Basic 2008

Novedades de VB 9.0

Operador ternario

• Es el equivalente a ?: de C#

• Y es una mejora de la función IIF ya que

devuelve el mismo tipo de datos que se usa en la

evaluación

Dim s As String = _

If(10 > 5, "10 es mayor que 5", "10 no es mayor que 5")

Page 9: Novedades de Visual Basic 2008

Novedades de VB 9.0

Operador ternario

• La "función" If también permite usar dos

argumentos

• Se evalúa el primero, si es Nothing se devuelve el

segundo (devuelve Object)

• Los tipos deben ser por referencia o anulables

Dim i As Object = If(o, 123)

Page 10: Novedades de Visual Basic 2008

Novedades de VB 9.0

Tipos anulables

• Definidos directamente en el lenguaje y basados

en Nullable(Of T)

• Al igual que en C#, se indican con una

interrogación después del tipo:

Boolean?, Date?, Integer?, etc.

• Todo lo que sepas sobre Nullable es aplicable a estos

tipos, pero ya forman parte del lenguaje

Page 11: Novedades de Visual Basic 2008

Novedades de VB 9.0

Métodos parciales

• Los métodos parciales nos permiten definir

"prototipos" de métodos que después podemos

definir completamente o no

' Declaración del método parcial

Partial Private Sub prueba1()

End Sub

' Podemos llamar al método "parcial" aunque

' no se haya implementado

prueba1()

Page 12: Novedades de Visual Basic 2008

Novedades de VB 9.0

Métodos parciales

• Hay ciertas restricciones a la hora de crear este

tipo de métodos, de las que podemos destacar:

• Deben ser de tipo Sub

• Deben ser privados

• Partial solo se usará en la definición del método

parcial no en la definición final

• Los parámetros deben tener los mismos nombres

• Si no se implementan, se eliminará todo el código

que use ese método parcial

Page 13: Novedades de Visual Basic 2008

Novedades de VB 9.0

LINQ

• Descripción de LINQ

• Expresiones de consulta al estilo SQL

• Inferencia de tipos

• Tipos anónimos

• Inicializadores de objetos

• Inicializadores de arrays y colecciones (no soportado)

• Expresiones lambda

• Métodos extensores

Page 14: Novedades de Visual Basic 2008

Novedades de VB 9.0

Descripción de LINQ

• LINQ = Language Integated Query

• Es la "razón" de casi todas las novedades de VB9

• LINQ nos permite crear expresiones de

"consultas" al estilo de T-SQL:

SELECT, FROM, JOIN, WHERE, ORDER BY, etc.

Page 15: Novedades de Visual Basic 2008

Novedades de VB 9.0

Expresiones de consulta al estilo SQL

• Esas instrucciones de consultas están incluidas en

el propio lenguaje y ¡no solo sirven para trabajar

con acceso a datos!

Dim nums() As Integer = {1, 20, 5, 2, 22, 11, 4, 3}

Dim q1 = From n In nums _

Where n > 4 _

Select n

For Each i In q1

Console.WriteLine(i)

Next

Page 16: Novedades de Visual Basic 2008

Novedades de VB 9.0

Instrucciones de consultas

• Para usar con LINQ

• Es la razón de ser de la inferencia de tipos, los

tipos anónimos y la inicialización de tipos

Dim q1 = From n In nums _

Let c = n Mod 2 _

Where n > 4 _

Order By n _

Select EsPar = (c = 0), Valor = n

Page 17: Novedades de Visual Basic 2008

Novedades de VB 9.0

Instrucciones de consultas

• Intellisense nos mostrará en cada momento las

instrucciones que podemos usar

Page 18: Novedades de Visual Basic 2008

Novedades de VB 9.0

Inferencia de tipos

• El compilador asume el tipo de las variables

dependiendo del valor asignado

Dim cadena = "Hola, Mundo"

Dim entero = 10

Page 19: Novedades de Visual Basic 2008

Novedades de VB 9.0

• ¿Cómo afecta a las aplicaciones de Visual Basic la

inferencia de tipos?

• Por defecto VB no obliga a indicar los tipos

o Option Strict Off por defecto

• Si esto es un "problema", podemos indicar que siga

siendo igual de "permisivo"

• Option Infer On/Off

Page 20: Novedades de Visual Basic 2008

Novedades de VB 9.0

Tipos anónimos

• Nos permite crear tipos "al vuelo"

Dim producto = New With { _

.Nombre = "Carpeta", _

.Precio = 1.29}

Page 21: Novedades de Visual Basic 2008

Novedades de VB 9.0

Tipos anónimos

• IntelliSense "sabe" que esos tipos tienen esas

propiedades que hemos definido

Page 22: Novedades de Visual Basic 2008

Novedades de VB 9.0

Inicialización de objetos

• Aprovecha la forma de definir de los tipos

anónimos, pero usando tipos declarados

Dim c = New Colega With {.Nombre = "Guille"}

Page 23: Novedades de Visual Basic 2008

Novedades de VB 9.0

Inicialización de colecciones y arrays

• Podemos usar esa forma de instanciar los

objetos para facilitar la creación de arrays

• No es tan potente como en C#, (hay que indicar que

es un array), pero lo simula...

Dim colegas() As Colega = { _

New Colega With {.Nombre = "Pepe"}, _

New Colega With {.Correo = "[email protected]"}, _

New Colega With {.Nombre = "Juan", _

.Correo = "[email protected]"}, _

New Colega With {.Nombre = "Luisa"} _

}

Page 24: Novedades de Visual Basic 2008

Novedades de VB 9.0

Inicialización de colecciones y arrays

• VB9 no tiene la posibilidad de crear colecciones

de esta forma

• Pero se puede usar un "método" alternativo

• (sigue el código)

Page 25: Novedades de Visual Basic 2008

Novedades de VB 9.0

Inicialización de colecciones (truco)

Function CrearLista(Of T)( _

ByVal ParamArray datos() As T _

) As IEnumerable(Of T)

' Como List(Of T)

Return New List(Of T)(datos)

' Como array

Return datos.ToArray

Return datos

End Function

Dim colegas = CrearLista( _

New Colega With {.Nombre = "Pepe"}, _

New Colega With {.Correo = "[email protected]"}, _

New Colega With {.Nombre = "Juan", _

.Correo = "[email protected]"}, _

New Colega With {.Nombre = "Luisa"} _

)

Page 26: Novedades de Visual Basic 2008

Novedades de VB 9.0

Expresiones Lambda

• Funciones en línea o funciones anónimas

Dim q1 = nums.Where(Function(n As Integer) n > 4)

Dim an = Function(n As Integer) If(n Mod 2 = 0, "par", "impar")

Console.WriteLine(an(3))

Page 27: Novedades de Visual Basic 2008

Novedades de VB 9.0

Métodos extensores

• Los métodos extensores nos permiten agregar

funcionalidad a las clases existentes

• Haciendo que parezca que usamos un método

propio de esa clase

• Podemos extender cualquier tipo, ya sea de .NET

o definidos en cualquier otra librería

• El primer parámetro será del tipo que queremos

extender

Page 28: Novedades de Visual Basic 2008

Novedades de VB 9.0

• Debemos definirlos en módulos (Module)

• Hay que indicar el atributo Extension que está

definido en el espacio de nombres

System.Runtime.CompilerServices

<Extension()> _

Public Function Mayúsculas(ByVal c As Colega) As String

Return (c.Nombre & ", " & c.Correo).ToUpper

End Function

Page 29: Novedades de Visual Basic 2008

Novedades de VB 9.0

• IntelliSense muestra los métodos extensores de

forma diferente a los métodos normales

• Con una flecha

Page 30: Novedades de Visual Basic 2008

Novedades de VB 9.0

XML (XLinq)

• Literales de XML

• Miembros de XML

Page 31: Novedades de Visual Basic 2008

Novedades de VB 9.0

• La integración de XML en Visual Basic (XLinq)

• Permite incluir código XML directamente

Dim contactDoc = _

<?xml version="1.0"?>

<contacts>

<contact>

<name>Patrick Hines</name>

<phone type="home">206-555-0144</phone>

<phone type="work">425-555-0145</phone>

</contact>

<contact>

<name>Pedro Picapiedra</name>

<phone type="home">001-111-0144</phone>

<phone type="work">001-222-0145</phone>

</contact>

</contacts>

Page 32: Novedades de Visual Basic 2008

Novedades de VB 9.0

• Y usarlo de forma “nativa” con el resto de las

nuevas características

Dim nombres = From c In contactDoc...<contact> _

Where c.<phone>.@type = "home" _

Select c

Page 33: Novedades de Visual Basic 2008

Novedades de VB 9.0

• También podemos insertar expresiones en el

código XML al estilo de ASP.NET

Dim elNombre = "Juan Luna"

Dim telef1 = "666 777 999"

Dim telef2 = "901 901 901"

Dim contact1 As XElement = _

<contact>

<name><%= elNombre %></name>

<phone type="home"><%= telef1 %></phone>

<phone type="work"><%= telef2 %></phone>

</contact>

Page 34: Novedades de Visual Basic 2008

Novedades de VB 9.0

• La instrucción Imports también permite importar

espacios de nombres de XML

Imports <xmlns:ns1="http://SomeNamespace">

Page 35: Novedades de Visual Basic 2008

Novedades de Visual Basic 2008

Mejoras de IntelliSense

• Reconoce automáticamente todas las novedades

del lenguaje

• Al igual que en Visual C# 2005, en el IDE de

Visual Basic 2008 se muestran las instrucciones

"desde el principio"

• Ha perdido un poco la "gracia" que tenía antes, pero...

las mejoras valen la pena con respecto a lo que se

pierde... por ejemplo, al asignar un valor a un

Boolean

Page 36: Novedades de Visual Basic 2008

http://www.elguille.info/NET/NovedadesVB9

Ya puedes conseguir

un libro sobre todas

las Novedades de

Visual Basic 2008

en formato PDF

Page 37: Novedades de Visual Basic 2008

Nuevo libro en preparación

Si te gustan los puntos y comas... tu libro es:

Aprenda C# 3.0 desde 0.0

Parte 3: Lo nuevo

http://www.elguille.info/NET/AprendaCSharp3

Page 38: Novedades de Visual Basic 2008

Guillermo ‘guille’ Som

[email protected]

http://www.elguille.info/

Novedades de VB 9.0