BT

Início Notícias Planos futuros para o C#

Planos futuros para o C#

Lire ce contenu en français

Favoritos

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.

Avalie esse artigo

Relevância
Estilo/Redação

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.

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

Comentários da comunidade

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

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

BT

Seu cadastro no InfoQ está atualizado? Poderia rever suas informações?

Nota: se você alterar seu email, receberá uma mensagem de confirmação

Nome da empresa:
Cargo/papel na empresa:
Tamanho da empresa:
País:
Estado:
Você vai receber um email para validação do novo endereço. Esta janela pop-up fechará em instantes.