Beruflich Dokumente
Kultur Dokumente
NOVEDADES EN C#
Variables locales con asignacin implcita de tipos
A las variables locales se les puede asignar un "tipo" deducido var en lugar de un tipo explcito. La
palabra clave var indica al compilador que deduzca el tipo de la variable a partir de la expresin
que se encuentra en el lado derecho de la instruccin de inicializacin. El tipo deducido puede ser
un tipo integrado, un tipo annimo, un tipo definido por el usuario, un tipo definido en la biblioteca
de clases de .NET Framework o cualquier expresin.
EJEMPLOS:
var i = 8;
El compilador deducir que es un int.
var nombre = "Pepe";
El compilador deducir que es un String.
var a = new[] { 0, 1, 2 };
El compilador deducir que es un array de enteros.
En muchos casos, el uso de var es opcional y es simplemente una comodidad sintctica. Sin
embargo, se requiere cuando una variable se inicializa con un tipo annimo. ste es un escenario
comn en expresiones de consulta LINQ.
var EnMayusculaYMinuscula =
from w in words
select new { Upper = w.ToUpper(), Lower = w.ToLower() };
Dado que slo el compilador conoce el nombre de un tipo annimo, es necesario utilizar var en el
cdigo fuente. Si una variable de consulta se ha inicializado con var, tambin debe utilizar var
como el tipo de la variable de iteracin en la instruccin
for y foreach
variable de consulta.
Novedades en C# 2008
Mtodos de extensin
Los mtodos de extensin permiten "agregar" mtodos a los tipos existentes sin
necesidad de crear un nuevo tipo derivado y volver a compilar o sin necesidad de modificar el tipo
original.
EJEMPLO:
namespace MetExtension
{
// Definir una clase esttica que contenga el mtodo de extensin
public static class Extension1
{
// El primer parmetro del mtodo especifica el tipo en el que funciona el mtodo;
debe estar precedido del modificador this.
public static int metodo1(this String str)
{
}
}
namespace MetExtension2
{
using MetExtension;
class Extension2
{
static void Main(string[] args)
{
string s = "";
}
}
Novedades en C# 2008
Tipos annimos
Los tipos annimos ofrecen un modo til de encapsular un conjunto de propiedades de
slo lectura en un nico objeto sin tener que definir antes un tipo de forma explcita.
Expresiones lambda
Una expresin lambda es una funcin annima que puede contener expresiones e instrucciones y
se puede utilizar para crear delegados o tipos de rboles de expresin.
Todas las expresiones lambda utilizan el operador lambda = >, que se lee como "va a". El lado
izquierdo del operador lambda especifica los parmetros de entrada (si existe alguno), mientras
que el lado derecho contiene el bloque de expresiones o instrucciones. La expresin lambda x =>
x * x se lee "x va a x veces x".
EJEMPLO:
delegate int del(int i);
del myDelegate = x => x * x;
int j = myDelegate(5); //j = 25
Las expresiones lambda se utilizan en consultas de LINQ basadas en mtodos como argumentos
para mtodos de operador de consulta estndar.
Novedades en C# 2008
Propiedades autoimplementadas
Las propiedades autoimplementadas hacen que la declaracin de propiedad sea ms concisa
cuando no se requiere ninguna lgica adicional en los descriptores de acceso de la propiedad. Al
declarar una propiedad como se muestra en el ejemplo siguiente, el compilador crea un campo
de respaldo privado y annimo al que solamente puede obtenerse acceso a travs de los
descriptores de acceso get y set de la propiedad.
class Clase1
{
public double Total { get; set; }
public string Nombre { get; private set; } // propiedad de solo lectura
public int Identificador { get; private set; } // propiedad de solo lectura
}
Novedades en C# 2008
EJEMPLO:
class Container
{
partial class Nested
{
void Test() { }
}
partial class Nested
{
void Test2() { }
}
}