lunes, 25 de junio de 2007

Relajandose las manos con las Propiedades

Quien no a tenido que desarrollar clases donde las propiedades son puros get y set sin mayor lógica que aquello (podría suceder al aplicar un model view presenter)(aunque obviamente suele suceder que debemos validar un valor, para agregarlo de una u otra manera). Pues bien, el caso de que sólo queremos aliviarnos el trabajo de escritura, tanto para ahorro de código, como para que no suframos de tendinitis a tan temprana edad podemos usar las propiedades de esta manera (te recuerda a una interface?):

public class DatosPersonales{
public string Nombre {get;set;}
public string Apellido {get;set;}
public string Direccion {get;set;}
}



luego, para utilizarla:

DatosPersonales misDatos= new DatosPersonales();
misDatos.Nombre="Perico";
misDatos.Apellido="Los Palotes";
misDatos.Direccion="Bajo el Puente s/n";


tataan!!!.

Personalmente, habría preferido la utilización de la palabra property (creo que seria mas listo o en su defecto, agregarla y dejar las 2 opciones...por si alguien solo desea usar un get o un set), como por ejemplo:
property string Nombre;
property string Apellido;
property string Direccion;


Pero bueno, es lo que hay, yo solo lo comento :P

Yield en C#

Básicamente, yield te permite poder retornar valores intermedios de una función, mediante la implementación de la Interfaz IEnumerable.
Esto quiere decir que podemos capturar cada iteración que pueda poseer un método, como por ejemplo:

using System;
using System.Collections;
public class Moledor
{
//Por que moledor?, porque toma un string y lo imprime caracter por caracter
public static IEnumerable Moledor(string palabra) {
int count = palabra.Length;
for (int i = 0; i < count; i++) {
yield return palabra[i];
}
}

static void Main()
{
foreach(char c in Moledor("Paralelepipedo")){
Console.WriteLine(c);
}
}
}

Ahora bien, otro ejemplo (que no es mío) es :

using System;
using System.Collections;
public class List
{
public static IEnumerable Power(int number, int exponent)
{
int counter = 0;
int result = 1;
while (counter++ < exponent)
{
result = result * number;
yield return result;
}
}

static void Main()
{
// Display powers of 2 up to the exponent 8:
foreach (int i in Power(2, 8))
{
Console.Write("{0} ", i);
}
}
}

Esto quiere decir: La operación 2^8 (dos elevado a 8) nos daría por resultado 256. Pero que sucede si queremos obtener los valores intermedios también (2^1 , 2^2,...,2^8)...entonces use yield :D nice!!!

Establecimiento implícito de tipos en C# 3.0 - No saber que es o tontera?

Buscando información por la red, me encuentro con el "nuevo" tipo de dato soportado por C# 3.0, el conocido "var" (por la gente de javascript).
Pues bien,¿que es var?; var es cualquier tipo de dato para una variable.
¿Un Variant de Visual Basic?; NO y NO. Un Variant no de ser inicializado (puede ser cualquier cosa), en cambio un var si!!! y es ahí donde realmente toma el tipo de dato (como sucede con php. Se puede no asignar el tipo de dato, pero una ver inicializada la variable, esta es del tipo de dato que se asigno).
Ejemplo:

int ñandu;
ñandu=1;

Ahora podemos decir:

var ñandu; <---Wow!!!! ñandú, a parte de ser un animal, de que tipo de dato es?

var ñandu=1; <----ahaha!!! ñandú es 1, osea entero.

Pd: El ejemplo pudo ser con una variable llamada cantidad o contador, la cual es mas autodescriptiva. Quise dejar esté nombre por 2 cosas;
1) Para aquellas personas que no sepan la existencia del ñandú
2) Para demostrar que se puede usar la Ñ (eñe).

Conclusión:

Para mi el aporte de var no es mucho: 4(para flojos?). y para uds que nota posee? (de 1 a 7, siendo 7 la mejor nota).
Luego posteré las nuevas de C# 3.0