Liberalização dos Domínios .pt Silverlight 2.0 - Poster Mix 08
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);
        }
    }
}

Os Object Initializers tornam-se especialmente úteis quando os utilizamos em conjunto com o LINQ, nas query expressions. Numa cláusula select, a query expression pode transformar, na própria query, os objectos que queremos seleccionar. Desta forma podemos obter apenas os dados que desejamos, por exemplo, imagem que só queriamos saber o primeiro e último nome dos objectos do tipo Citizen. Nesse caso teriamos um select deste género:

var citizenNames = from c in citizens
                   select new {c.FirstName, c.LastName};

foreach (var cit in citizenNames)
{
    Console.WriteLine("{0} {1}",cit.FirstName, cit.LastName);
}

O objecto citizenNames, contem novos objectos com apenas as propriedades FirstName e LastName. Com os Object Initializers poderíamos até alterar o nome da propriedade, utilizando a sintaxe seguinte:

var citizenNames = from c in citizens
                   select new {c.FirstName, Name = c.LastName};

foreach (var cit in citizenNames)
{
    Console.WriteLine("{0} {1}",cit.FirstName, cit.Name);
}

Mais uma vez, podemos ver que com a utilização das novas funcionalidade do C# 3.0 encurtamos o número de linhas de código produzidas.

rss_icon_glass_reflection64

Se gostaram deste artigo subscrevam a feed RSS do istomesmo, para ficarem actualizados sobre os últimos artigos.

» Subscrevam aqui a fedd RSS «

Obtenha mais informações sobre a fedd RSS aqui


publicado por NC Etiquetas: , , ,

Deixar uma resposta