Quer Ganhar um netbook Asus Eee PC 1008HA Seashell? Clique Aqui
Mar 17

Artigo Principal - As Novas Funcionalidades do C# 3.0

image Hoje vou falar-vos de outra funcionalidade introduzida com o C# 3.0 que são os Object Initializers, que permitem inicializar objectos, de uma forma mais compacta e rápida que o tradicional.

Com esta funcionalidade podemos inicializar as propriedades de um objecto logo na declaração do mesmo, utilizando chavetas, como vão poder ver no exemplo seguinte.

Neste exemplo, criámos uma classe Citizen com algumas propriedades. Na função main, temos primeiro a declaração do objecto bill da maneira tradicional, e depois a declaração do objecto steve, através dos object initializers:

using System;

namespace ConsoleApplication
{

    class Program
    {
        static void Main(string[] args)
        {
            Citizen bill = new Citizen();
            bill.Age = 40;
            bill.FirstName = "Bill";
            bill.LastName = "Gates";
            bill.Gender = Genders.Male;
            bill.PrintInfo();

            Citizen steve = new Citizen() {FirstName = "Steve", LastName = "Jobs", Age = 43, Gender = Genders.Male};
            steve.PrintInfo();

            Console.ReadKey();
        }
    }

    public enum Genders
    {
        Male = 0,
        Female = 1
    }

    public class Citizen
    {

        private string firstName;
        private int age;
        private string lastName;
        private Genders gender;

        public string FirstName
        {
            get { return firstName; }
            set { firstName = value; }
        }

        public int Age
        {
            get { return age; }
            set { age = value; }
        }

        public string LastName
        {
            get { return lastName; }
            set { lastName = value; }
        }

        public Genders Gender
        {
            get { return gender; }
            set { gender = value; }
        }

        public void PrintInfo()
        {
            Console.WriteLine("Name: {0} \nLastName: {1} \nAge: {2} \nGender: {3}", firstName, lastName, age, gender);
        }
    }
}

Ler o resto do artigo »

Mar 13

Artigo Principal - As Novas Funcionalidades do C# 3.0

image Uma expressão Lambda é uma função anónima que pode conter expressões e declarações, e pode ser usada para criar delegates ou expression tree types.

As expressões Lambda usam o operador =>. O lado esquerdo do operador lambda especifica os parâmetros de entrada  e o lado direito especifica a expressão. Por exemplo, a expressão Lambda x=>x*x .

Passemos a um exemplo prático:

using System;

namespace ConsoleApplication
{
    //Declare a Delegate
    delegate int Del(int x);

    class Program
    {
        static void Main(string[] args)
        {
            //Create the Lambda Expression
            Del AoQuadrado = x => x*x;

            Console.WriteLine(AoQuadrado(4));

            Console.ReadKey();
        }
    }
}

Como podem ver pelo exemplo anterior associámos a expressão Lambda a um delegate type criado.


Ler o resto do artigo »

Mar 05

Marcas Technorati: ,,,

Artigo Principal - As Novas Funcionalidades do C# 3.0

Esta é sem dúvida umas das funcionalidade que mais gostei no C# 3.0. Com ela podemos extender tipos existentes (string, int, etc…) ou tipos construídos (client, car, person, etc…) com métodos adicionais. Estes métodos estáticos podem ser invocados com a mesma sintaxe que os métodos de instância.

Esta funcionalidade pode ser extremamente útil no desenvolvimento, e tornar o código muito mais limpo e reutilizável. De seguida vou mostrar um exemplo, de como podemos capitalizar as primeiras letras das palavras que constituem uma determinada string. Para isso vamo criar um Extension Method ao tipo string:

public static class IstoMesmoExtensions
{
  public static string ProperCase(this string s)
  {
    string[] words = s.Split(’ ‘);
    string result = string.Empty;

    foreach (string i in words)
    {
      result = result + i.Substring(0, 1).ToUpper() +
  
                  i.Substring(1).ToLower() + ” “;
    }
   
result = result.Substring(0, result.Length - 1);
    return result;
  }
}

Ler o resto do artigo »