Novedades Revistas :: Septiembre 2014 :: Biblioteca Karl C. Parrish
Novedades en c#
-
Upload
francisco-coayo-matos -
Category
Documents
-
view
217 -
download
0
description
Transcript of 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
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
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
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
Novedades en C# 2008
{ partial class Nested { void Test() { } } partial class Nested { void Test2() { } }}
5