Archivo por días: 23 noviembre, 2014

Nuevas características de C# 6 y VB 14

 

Pues eso… que lo prometido es deuda y antes de que se me olvide, pues… te pego la tabla que te comenté antes con las novedades o nuevas características que tendrán los lenguajes principales de .NET en la versión definitiva de Visual Studio 2015 o lo que es lo mismo en .NET 4.6 o en la versión final de Roslyn (.NET Compiler Platform).

Esta tabla está "tomada prestada" de esta entrada: Languages features in C# 6 and VB 14 del sitio de Roslyn en Codeplex.

Debes tener en cuenta lo que en página dice sobre estas novedades (está en inglés pero con la ayuda del traductor de Google te lo pongo para que lo entiendas si no sabes mucho inglés):
Tenga en cuenta que todo está todavía sujeta a cambios – se trata de una vista previa después de todo. Sin embargo, estamos razonablemente seguros acerca de la característica general establecido en este punto.

La tabla con las características de los lenguajes:

Feature Example C# VB
Auto-property initializers public int X { get; set; } = x; Added Exists
Getter-only auto-properties public int Y { get; } = y; Added Added
Ctor assignment to getter-only autoprops Y = 15 Added Added
Parameterless struct ctors Structure S : Sub New() : End Sub : End Structure Added Added
Using static members using System.Console; … Write(4); Added Exists
Dictionary initializer new JObject { ["x"] = 3, ["y"] = 7 } Added No
Await in catch/finally try … catch { await … } finally { await … } Added No
Exception filters catch(E e) if (e.Count > 5) { … } Added Exists
Partial modules Partial Module M1 N/A Added
Partial interfaces Partial Interface I1 Exists Added
Multiline string literals "Hello<newline>World" Exists Added
Year-first date literals Dim d = #2014-04-03# N/A Added
Line continuation comments Dim addrs = From c in Customers ‘ comment N/A Added
TypeOf IsNot If TypeOf x IsNot Customer Then … N/A Added
Expression-bodied members public double Dist => Sqrt(X * X + Y * Y); Added No
Null propagation customer?.Orders?[5]?.$price Added Added
String interpolation $"{p.First} {p.Last} is {p.Age} years old." Added* Planned
nameof operator string s = nameof(Console.Write); Added* Planned
#pragma #Disable Warning BC40008 Added Added
Smart name resolution   N/A Added
ReadWrite props can implement ReadOnly   Exists Added
#region inside methods   Exists Added
Overloads inferred from Overrides   N/A Added
CObj in attributes   Exists Added
CRef and parameter name   Exists Added
Extension Add in collection initializers   Added Exists
Improved overload resolution   Added N/A

*Design changes expected

Para más información sobre todas las características (con detalle):

C# feature descriptions (es un PDF)

Visual Basic feature descriptions (es una página web)

 

Si quieres probar estas novedades, puedes hacerlo desde la versión preview de Visual Studio 2015 la cual te la puedes descargar desde este enlace.

VS2015_preview

Espero que te sirva y… eso… a ver si voy haciendo algunas pruebas…

 

Nos vemos.
Guillermo

vaya lío… VB 14 es VB 1 y C# 6 es C# 1

 

Pues eso… que con todo esto de Roslyn (la nueva generación de compiladores de Visual Basic y C#) se ve que la numeración de los compiladores vuelve a empezar desde 1.0.

En la versión actual de Visual Studio 2013 (con Update 4) las versiones de los compiladores incluidos son estos (tal como podemos ver en las figuras 1 y 2):
Visual Basic 11
C# 5.0

 
Figura 1. Versión del compilador de C# incluido en Visual Studio 2013.4

 
Figura 2. Versión del compilador de VB incluido en Visual Studio 2013.4

Donde se han quedado las versiones 12 y 13 de Visual Basic es un misterio (al menos para mí) (*) pero en la versión preview de Visual Studio 2015 (hasta hace poco llamada Visual Studio 14) las versiones de los compiladores eran: C# 6.0 y VB 12, así que… se ve que el compilador de Visual Basic ha ganado dos versiones… 🙂

(*)Sobre las versiones de VB:
Yo pensaba que VB 12 era el que se incluía con VS2013 y se ve que mantiene el nombre o número VB 11, pero del VB 13 no recuerdo haber visto nada.
De hecho VB 12 era el que corresponde con C# 6 en las CTP de Roslyn y posteriores versiones de Visual Studio CTP/Preview, aunque ahora en Roslyn se habla (o escribe) de C# 6 y VB 14.

 

En el Visual Studio 2015 Preview (Ultimate) las versiones mostradas en las información de los compiladores son la 1.0 (con el número de compilación que no sé de dónde viene, ya que es 41031 y la de Visual Studio es 14.0.223110.1) tal como puedes apreciar en las figuras 3 y 4:

 
Figura 3. Versión del compilador de C# incluido en Vs2015 Preview

 
Figura 4. Versión del compilador de VB incluido en Vs2015 Preview

Pero bueno, por ahora si ves que hablan del compilador C# 6.0 o VB 14 están hablando de lo que vendrá con .NET 4.6 y Visual Studio 2015 (aunque la numeración interna es la 14).

Por cierto, en los compiladores vienen un montón de novedades… a ver si te pongo una tabla que he visto hace un rato con un resumen de las novedades tanto de C# como de Visual Basic.

 

Nos vemos.
Guillermo