C# 3.0

A versão 3.0 da linguagem C# já está por cá há algum tempo mas ainda assim há bastante gente que desconhece algumas das novas features: propriedades automáticas, extension methods, inferência de tipos, tipos anónimos, expressões lambda, LINQ, object and collection initializers, etc. As novidades não são fruto de alterações à plataforma .NET mas sim o resultado do trabalho da nova versão do compilador em conjunto com algumas novas bibliotecas. Algumas das funcionalidades são só umas “coisitas”, outras dão bastante jeito e tornam o código mais limpo e “bonito”.

class Person
{
    public string Name { get; set; }
    public ushort Age { get; set; }
}

static class StringExtensions
{
    public static string MyStringExtension(this string s)
    {
        return s + " after my extension";
    }
}

class Program
{
    static void Main(string[] args)
    {
        List<Person> persons = new List<Person>
        { 
            new Person { Name = "João", Age = 18 },
            new Person { Name = "Sara", Age = 21 },
            new Person { Name = "Luís", Age = 22 }
        };

        var x = from p in persons
                where p.Age > 20
                select p.Name;

        foreach (string s in x)
            Console.WriteLine(s.MyStringExtension());
            // "Sara after my extension"
            // "Luís after my extension"
    }
}

Muito “estranho”? 🙂 Como já muito foi escrito sobre o assunto, deixo aqui o link para um conjunto de tutorials escritos pelo David Hayden, um MVP na área do C#, que abordam desde os pontos mais simples até aos mais complexos, incluindo alguns vídeos e apresentações.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s