Novedades en c#

8
Novedades en C# 2008 NOVEDADES EN C# Variables locales con asignación implícita de tipos A las variables locales se les puede asignar un "tipo" deducido var en lugar de un tipo explícito. La palabra clave var indica al compilador que deduzca el tipo de la variable a partir de la expresión que se encuentra en el lado derecho de la instrucción de inicialización. El tipo deducido puede ser un tipo integrado, un tipo anónimo, un tipo definido por el usuario, un tipo definido en la biblioteca de clases de .NET Framework o cualquier expresión. 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 anónimos En muchos casos, el uso de var es opcional y es simplemente una comodidad sintáctica. Sin embargo, se requiere cuando una variable se inicializa con un tipo anónimo. Éste es un escenario común en expresiones de consulta LINQ. var EnMayusculaYMinuscula = from w in words select new { Upper = w.ToUpper(), Lower = w.ToLower() }; Dado que sólo el compilador conoce el nombre de un tipo anónimo, es necesario utilizar var en el código fuente. Si una variable de consulta se ha inicializado con var, también debe utilizar var como el tipo de la variable de iteración en la instrucción for y foreach que recorre en iteración la variable de consulta. 1

description

novedades c visual studio

Transcript of Novedades en c#

Page 1: Novedades en c#

Novedades en C# 2008

NOVEDADES EN C#

Variables locales con asignación implícita de tipos

A las variables locales se les puede asignar un "tipo" deducido var en lugar de un tipo explícito. La palabra clave var indica al compilador que deduzca el tipo de la variable a partir de la expresión que se encuentra en el lado derecho de la instrucción de inicialización. El tipo deducido puede ser un tipo integrado, un tipo anónimo, un tipo definido por el usuario, un tipo definido en la biblioteca de clases de .NET Framework o cualquier expresión.

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 anónimos

En muchos casos, el uso de var es opcional y es simplemente una comodidad sintáctica. Sin

embargo, se requiere cuando una variable se inicializa con un tipo anónimo. Éste es un escenario

común en expresiones de consulta LINQ.

var EnMayusculaYMinuscula =

from w in words

select new { Upper = w.ToUpper(), Lower = w.ToLower() };

Dado que sólo el compilador conoce el nombre de un tipo anónimo, es necesario utilizar var en el

código fuente. Si una variable de consulta se ha inicializado con var, también debe utilizar var

como el tipo de la variable de iteración en la instrucción for y foreach que recorre en iteración la

variable de consulta.

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

foreach(var variable in colección){...}

1

Page 2: Novedades en c#

Novedades en C# 2008

Inicializadores de objeto y de colección

Los inicializadores de objeto permiten asignar valores a los campos o propiedades accesibles de un objeto en el momento de la creación sin tener que invocar explícitamente 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" };}

Métodos de extensión

Los métodos de extensión permiten "agregar" métodos 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 estática que contenga el método de extensión public static class Extension1

{// El primer parámetro del método especifica el tipo en el que funciona el método; 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); } }}

2

Page 3: Novedades en c#

Novedades en C# 2008

Tipos anónimos

Los tipos anónimos ofrecen un modo útil de encapsular un conjunto de propiedades de sólo lectura en un único objeto sin tener que definir antes un tipo de forma explícita.

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

Normalmente, los tipos anónimos se utilizan en la cláusula select de una expresión de consulta para devolver un subconjunto de las propiedades de cada objeto de la secuencia de origen.

Los tipos anónimos son tipos class que constan de una o más propiedades públicas de sólo lectura. No se permite ningún otro tipo de miembros de clase, como métodos 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 expresión lambda es una función anónima que puede contener expresiones e instrucciones y

se puede utilizar para crear delegados o tipos de árboles de expresión.

Todas las expresiones lambda utilizan el operador lambda = >, que se lee como "va a". El lado

izquierdo del operador lambda especifica los parámetros de entrada (si existe alguno), mientras

que el lado derecho contiene el bloque de expresiones o instrucciones. La expresión 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 métodos como argumentos para métodos de operador de consulta estándar.

Palabras clave de consultasPalabras clave que especifican cláusulas en una expresión de consulta: Cláusulas from

Cláusula where (opcional)

Cláusulas de ordenación (opcional)

Cláusula join (opcional)

Cláusula select o group

Cláusula into (opcional)

3

Page 4: Novedades en c#

Novedades en C# 2008

Propiedades autoimplementadas

Las propiedades autoimplementadas hacen que la declaración de propiedad sea más concisa

cuando no se requiere ninguna lógica 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 anónimo al que solamente puede obtenerse acceso a través 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 métodos parciales

Es posible dividir la definición de una clase, estructura, interfaz o método en dos o más archivos

de código fuente. Cada archivo de código fuente contiene una sección de la definición de tipos o

métodos, y todas las partes se combinan cuando se compila la aplicación.

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 compilación para formar el tipo final.

EJEMPLO:

class Container

4

Page 5: Novedades en c#

Novedades en C# 2008

{ partial class Nested { void Test() { } } partial class Nested { void Test2() { } }}

5