Esse é o 15º post da série sobre C# 7, e o primeiro sobre C# 7.2. Pra acompanhar a série você pode seguir a tag C#7 no blog ou voltar no post que agrega a série.

Lembrando que para utilizar as versões minor do C# (como a 7.1, ou 7.2) você precisa habilitá-la nos atributos do projeto. Veja neste post como fazê-lo e também como habilitar na solution inteira pra não ter que ficar configurando cada projeto individualmente.

Novidades do C# 7.2: Argumentos nomeados que não estão no final da lista de argumentos

Na versão 7.2 é agora possível utilizar argumentos nomeados sem serem os últimos na lista de argumentos.

Por exemplo, assumindo que temos a função M:

void M(int i, int j) { }

Antes, ao chamar a função, poderíamos passar os argumentos de forma posicional, sem nomear, assim:

M(2, 3);

Ou nomeando somente o segundo:

M(2, j: 3);

Ou nomeando ambos:

M(i: 2, j: 3);

No C# 7.2 é possível nomear o primeiro, mas não o segundo, desde que a ordem dos argumentos esteja correta. No nosso exemplo, fica assim:

M(i: 2, 3);

Por que você faria isso, talvez você esteja se perguntando. O principal ponto desta funcionalidade é melhorar a legibilidade do código. Na nossa primeira chamada, é impossível entender o que os números 2 e 3 significam, já quando os nomeamos, fica mais fácil. Se bem que os nomes M, i e j são péssimos para nomes de funções e/ou parâmetros, sendo assim, utilize nomes mais descritivos, e nomeie argumentos sempre que chamar um método com valores que não deixem clara a intenção no local da chamada. Com a nova syntaxe você não é obrigada(o) a nomear todos os argumentos mais, somente os que não forem explícitos o suficiente.

Você consegue ler sobre argumentos nomeados nos docs sobre argumentos nomeados e opcionais.

Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.