C# - Apresentando as versões e seus recursos
 Hoje vou apresentar um resumo sobre as versões da linguagem C# e os principais recursos que cada versão trouxe.

As linguagens de programação são muito parecidas com as linguagens humanas, elas evoluem e vão incorporando novos termos e novos recursos. Com o C# não é diferente e a seguir temos um resumo da evolução da linguagem iniciando com o C# 1.0 até o C# 11.

C# 1.0

O C# 1.0 foi lançado em 2002 e incluía todos os recursos importantes de uma linguagem moderna orientada a objetos estaticamente tipada, como você verá ao longo dos Capítulos 2 a 6.

C# 2.0

O  C# 2.0 foi lançado em 2005 e focado em habilitar a tipagem forte de dados usando Generics, para melhorar o desempenho do código e reduzir erros de tipo, incluindo os tópicos listados na tabela a seguir:

Recurso

Descrição

Nullable value types

Tornar um tipo de valor anulável

Generics

Tornar os tipos mais reutilizáveis com genéricos

C# 3.0

O C# 3.0 foi lançado em 2007 e focado em habilitar a codificação declarativa com Language INtegrated Queries (LINQ) e recursos relacionados, como tipos anônimos e expressões lambda, incluindo os tópicos listados na tabela a seguir:

Recurso

Descrição

Implicitly typed local variables

Inferindo o tipo da variável local

LINQ

Consulta e manipulação de dados usando LINQ

C# 4.0

O C# 4.0 foi lançado em 2010 e focado em melhorar a interoperabilidade com linguagens dinâmicas como F# e Python, incluindo os tópicos listados na tabela a seguir:

Recurso

Descrição

Dynamic types

Armazenar tipos dinâmicos

Named/optional arguments

Parâmetros opcionais e argumentos nomeados

C# 5.0

O C# 5.0 foi lançado em 2012 e se concentrava na simplificação do suporte à operação assíncrona, implementando automaticamente máquinas de estado complexo enquanto escrevia o que parecia ser instruções síncronas, incluindo os tópicos listados na tabela a seguir:

Recurso

Descrição

Asynchronous tasks

Suporte a operações assíncronas com async e await

C# 6.0

O C# 6.0 foi lançado em 2015 e focado em pequenos refinamentos para a linguagem, incluindo os tópicos listados na tabela a seguir:

Recurso

Descrição

static imports

Simplificando o uso do console

Interpolated strings

Exibindo a saída do usuário

Expression bodied members

Definindo propriedades somente leitura

C# 7.0

O C# 7.0 foi lançado em março de 2017 e focado na adição de recursos de linguagem funcional, como tuplas e correspondência de padrões, bem como pequenos refinamentos para a linguagem, incluindo os tópicos listados na tabela a seguir:

Recurso

Descrição

Binary literals and digit separators

Armazenando números inteiros

Pattern matching

Correspondência de padrões

out variables

Controlando como os parâmetros são passados

Tuples

Combinando vários valores com tuplas

Local functions

Definindo funções locais

C# 7.1

O C# 7.1 foi lançado em agosto de 2017 e focado em pequenos refinamentos para a linguagem, incluindo os tópicos listados na tabela a seguir:

Recurso

Descrição

Default literal expressions

Configurando campos com literal padrão

Inferred tuple element names

Inferindo nomes de tuplas

async Main

Melhorar a resposta de aplicações Console

C# 7.2

O C# 7.2 foi lançado em novembro de 2017 e focado em pequenos refinamentos para a linguagem, incluindo os tópicos listados na tabela a seguir:

Recurso

Descrição

Leading underscores in numeric literals

Armazenando números inteiros

Non-trailing named arguments

Argumentos nomeados não finais

private protected access modifier

Modificadores de acesso

 == e != com tipos tuplas

Comparando tuplas

C# 7.3

O C# 7.3 foi lançado em maio de 2018 e focado em código seguro orientado para desempenho que melhora variáveis ​​ref, ponteiros e stackalloc.

C# 8

O C# 8 foi lançado em setembro de 2019 e focado em uma grande mudança na linguagem relacionada ao tratamento de nulos, incluindo os tópicos listados na tabela a seguir:

Recurso

Descrição

Nullable reference types

Tornando um tipo de referência anulável

Switch expressions

Simplificando instruções switch com expressões switch

Default interface methods

Métodos de interface padrão

C# 9

O C# 9 foi lançado em novembro de 2020 e focado em tipos de registro, refinamentos para correspondência de padrões e aplicativos de console de código mínimo, incluindo os tópicos listados na tabela a seguir:

Recurso

Descrição

Minimal-code console apps

Instruções de nível superior

Target-typed new

Usando o novo target-typed para instanciar objetos

Enhanced pattern matching

Correspondência de padrões com objetos

Records

Usando o tipo record

C# 10

O C# 10 foi lançado em novembro de 2021 e focado em recursos que minimizam a quantidade de código necessária em cenários comuns, incluindo os tópicos listados na tabela a seguir:

Recurso

Descrição

Global namespace imports

Usando namespaces Global

Constant string literals

Formatando strings interpoladas

File-scoped namespaces

Simplificando a declaração de namespaces

Required properties

Definindo propriedades na instanciação

Record structs

Usar tipos record como uma struct

Null parameter checks

Verificando null nos parâmetros de métodos

C# 11

O C# 11 foi lançado em novembro de 2022 e apresenta a matemática genérica e vários recursos que oferecem suporte a esse objetivo. Você pode escrever algoritmos numéricos uma vez para todos os tipos de número. Há mais recursos para facilitar o trabalho com tipos structs, como membros obrigatórios e structs padrão automáticas.

Trabalhar com strings fica mais fácil com literais de string Raw, nova linha em interpolações de string e literais de string UTF-8. Recursos como tipos locais de arquivos permitem que os geradores de origem sejam mais simples. Por fim, os padrões de lista adicionam mais suporte para correspondência de padrões.

E lá são vão 21 anos desde o lançamento da primeira versão...

E estamos conversados.

"Porque foi do agrado do Pai que toda a plenitude nele habitasse,
E que, havendo por ele feito a paz pelo sangue da sua cruz, por meio dele reconciliasse consigo mesmo todas  as  coisas, tanto as que estão na terra, como as que estão nos céus."
Colossenses 1:19,20

Referências:


José Carlos Macoratti