Sie sind auf Seite 1von 5

Novedades en C# 2008

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.

Var y los tipos annimos

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

que recorre en iteracin la

variable de consulta.

for(var x = 1; x < 10; x++)


foreach(var variable in coleccin){...}

Novedades en C# 2008

Inicializadores de objeto y de coleccin


Los inicializadores de objeto permiten asignar valores a los campos o propiedades
accesibles de un objeto en el momento de la creacin sin tener que invocar explcitamente un
constructor.
private class Alumno
{
public int Edad { get; set; }
public string Nombre { get; set; }
}
static void Llamada()
{
Alumno almn = new Alumno { Edad = 26, Nombre = "Pepe" };
}

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 = "";

}
}

int i = s. metodo1 ();


messagebox.show(i);

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.

var v = new { Edad = 28, Nombre = "Pepe" };


Normalmente, los tipos annimos se utilizan en la clusula select de una expresin de
consulta para devolver un subconjunto de las propiedades de cada objeto de la secuencia de
origen.
Los tipos annimos son tipos class que constan de una o ms propiedades pblicas de slo
lectura. No se permite ningn otro tipo de miembros de clase, como mtodos o eventos.
EJEMPLO:
var productQuery =
from prod in products
select new { prod.Color, prod.Price };
foreach (var v in productQuery)
{
Console.WriteLine("Color={0}, Price={1}", v.Color, v.Price);
}

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.

Palabras clave de consultas


Palabras clave que especifican clusulas en una expresin de consulta:
Clusulas from

Clusula where (opcional)

Clusulas de ordenacin (opcional)

Clusula join (opcional)

Clusula select o group

Clusula into (opcional)

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
}

Clases y mtodos parciales


Es posible dividir la definicin de una clase, estructura, interfaz o mtodo en dos o ms archivos
de cdigo fuente. Cada archivo de cdigo fuente contiene una seccin de la definicin de tipos o
mtodos, y todas las partes se combinan cuando se compila la aplicacin.
EJEMPLO:
public partial class Empleados
{
public void metodo1()
{
}
}
public partial class Empleados
{
public void metodo2()
{
}
}
La palabra clave partial indica que otras partes de la clase, estructura o interfaz se pueden definir
en el espacio de nombres. Todas las partes deben utilizar la palabra clave partial. Todas las
partes deben estar disponibles en tiempo de compilacin para formar el tipo final.

Novedades en C# 2008
EJEMPLO:
class Container
{
partial class Nested
{
void Test() { }
}
partial class Nested
{
void Test2() { }
}
}

Das könnte Ihnen auch gefallen