BT

Planos futuros para o C#

por Jonathan Allen , traduzido por Elias Lima de Souza em 24 Dez 2013 |

No NDC Londres, Mads Torgersen, membro do time de design do C#, propôs mudanças para a linguagem C#. Deve ser ressaltado que são apenas propostas e que não existem garantias de que irão aparecer em alguma versão específica da linguagem. Damien Guard postou um resumo e uma breve análise dessas propostas e aqui vão alguns dos principais tópicos.

Propriedades somente leitura

Propriedades somente leitura vão permitir que desenvolvedores declarem propriedades e os valores que elas armazenam em uma única linha.


public int X { get; } = x;

 

Uso de tipos estáticos

Visual Basic e Java já permitem que desenvolvedores importem módulos (classes estáticas em C#) no namespace. Isso permite remover códigos repetitivos como "Math." na frente de funções comumente utilizadas.

Construtores primários

Colocando parâmetros após o nome da classe, os desenvolvedores não precisarão explicitamente criar construtores. Isso elimina a necessidade de copiar os valores dos parâmetros dos construtores nos campos privados.


public class Point(int x, int y) {

private int x, y;

}

Expressões de propriedade e método

Expressões de propriedade eliminariam alguns clichês necessários para propriedades somente leitura.


public double Distance => Math.Sqrt((X * X) + (Y * Y));

Propriedades de método fariam o mesmo, exceto que obviamente aceitariam parâmetros.

Perceba que propriedades parametrizadas ainda não estão sendo consideradas. Para um futuro próximo, isso continua sendo uma funcionalidade apenas do VB.

Parâmetros de função

Nos dias de hoje, a maioria dos desenvolvedores não utilizam arrays, exceto quando precisam para a palavra-chave params. Assim, uma proposta é que a interface IEnumerable<T> também suporte params. Se isso for feito, outras linguagens como Visual Basic também precisariam dar suporte à essa funcionalidade.

Outra proposta é permitir que variáveis locais sejam declaradas utilizando a palavra chave out. Por exemplo,


int.TryParse("123", out int x);

Propagação de null

Quando estão trabalhando com dados confusos, os desenvolvedores freqüentemente precisam escrever uma série de validações de nulo antes de ler uma propriedade ou invocar um método. A sintaxe ?. eliminaria a necessidade de validação, invocando o método se o valor que a procede não for nulo.


var bestValue = points?.FirstOrDefault()?.X;

Nesse caso, se points for nulo, ou points.FirstOrDefault() retornar nulo, então .X é ignorado e a expressão retorna nulo. Isso pode ser encadeado com ?? para fornecer um valor padrão alternativo.


var bestValue = points?.FirstOrDefault()?.X ?? -1;

Essa semântica é encontrada em linguagens de "passagem de mensagens", como Objective-C e Smalltalk. É comumente citada como sendo problemática porque o que poderia ser uma exceção de referência nula, é silenciosamente ignorada.

Por fim, essas propostas de novas funcionalidades para o C# ajudariam a diminuir o ruído e a repetição de código, mas ainda precisam ser melhor estudadas e detalhadas para uma análise mais concreta dos prós e contras de cada abordagem.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2013 C4Media Inc.
Política de privacidade
BT