Preferências de parênteses (IDE0047 e IDE0048)

Este artigo descreve duas regras relacionadas, IDE0047 e IDE0048.

Propriedade Valor
ID da regra IDE0047
Título Remover os parênteses desnecessários
Categoria Estilo
Subcategoria Regras de linguagem (preferências de parênteses)
Linguagens aplicáveis C# e Visual Basic
Versão introduzida Visual Studio 2017
Opções dotnet_style_parentheses_in_arithmetic_binary_operators
dotnet_style_parentheses_in_relational_binary_operators
dotnet_style_parentheses_in_other_binary_operators
dotnet_style_parentheses_in_other_operators
Propriedade Valor
ID da regra IDE0048
Título Adicionar parênteses para esclarecimento
Categoria Estilo
Subcategoria Regras de linguagem (preferências de parênteses)
Linguagens aplicáveis C# e Visual Basic
Versão introduzida Visual Studio 2017
Opções dotnet_style_parentheses_in_arithmetic_binary_operators
dotnet_style_parentheses_in_relational_binary_operators
dotnet_style_parentheses_in_other_binary_operators
dotnet_style_parentheses_in_other_operators

Visão geral

As regras de estilo nesta seção dizem respeito às preferências de parênteses, incluindo o uso de parênteses para esclarecer a precedência para aritméticos, relacionais e outros operadores binários.

Opções

Esta regra tem opções associadas para especificar preferências com base no tipo de operador:

Para obter informações sobre como configurar as opções, consulte Formato da opção.

dotnet_style_parentheses_in_arithmetic_binary_operators

Propriedade Valor Descrição
Nome da opção dotnet_style_parentheses_in_arithmetic_binary_operators
Valores da opção always_for_clarity Prefira parênteses para esclarecer a precedência do operador aritmético
never_if_unnecessary Prefira sem parênteses quando a precedência do operador aritmético é óbvia
Valor da opção padrão always_for_clarity

Os operadores binários aritméticos são: *, /, %, +, -, <<, >>, &, ^ e |.

// dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
var v = a + (b * c);

// dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary
var v = a + b * c;
' dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
Dim v = a + (b * c)

' dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary
Dim v = a + b * c

dotnet_style_parentheses_in_relational_binary_operators

Propriedade Valor Descrição
Nome da opção dotnet_style_parentheses_in_relational_binary_operators
Valores da opção always_for_clarity Prefira parênteses para esclarecer a precedência do operador relacional
never_if_unnecessary Prefira não ter parênteses quando a precedência do operador relacional é óbvia
Valor da opção padrão always_for_clarity

Os operadores binários relacionais são: >, <, <=, >=, is, as, == e !=.

// dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
var v = (a < b) == (c > d);

// dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary
var v = a < b == c > d;
' dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
Dim v = (a < b) = (c > d)

' dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary
Dim v = a < b = c > d

dotnet_style_parentheses_in_other_binary_operators

Propriedade Valor Descrição
Nome da opção dotnet_style_parentheses_in_other_binary_operators
Valores da opção always_for_clarity Prefira parênteses para esclarecer a precedência de outros operadores binários
never_if_unnecessary Prefere não ter parênteses quando a precedência de outro operador binário é óbvia
Valor da opção padrão always_for_clarity

Os outros operadores binários são: &&, || e ??.

// dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
var v = a || (b && c);

// dotnet_style_parentheses_in_other_binary_operators = never_if_unnecessary
var v = a || b && c;
' dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
Dim v = a OrElse (b AndAlso c)

' dotnet_style_parentheses_in_other_binary_operators = never_if_unnecessary
Dim v = a OrElse b AndAlso c

dotnet_style_parentheses_in_other_operators

Propriedade Valor Descrição
Nome da opção dotnet_style_parentheses_in_other_operators
Valores da opção always_for_clarity Prefira parênteses para esclarecer a precedência de outro operador
never_if_unnecessary Prefere não ter parênteses quando a precedência de outro operador é óbvia
Valor da opção padrão never_if_unnecessary

Esta opção se aplica a operadores diferentes dos seguintes:

*, /, %, +, -, <<, >>, &, ^, |>, <, <=, >=, is, as, ==, !=&&, ||, ??

// dotnet_style_parentheses_in_other_operators = always_for_clarity
var v = (a.b).Length;

// dotnet_style_parentheses_in_other_operators = never_if_unnecessary
var v = a.b.Length;
' dotnet_style_parentheses_in_other_operators = always_for_clarity
Dim v = (a.b).Length

' dotnet_style_parentheses_in_other_operators = never_if_unnecessary
Dim v = a.b.Length

Suprimir um aviso

Se você quiser suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite a regra.

#pragma warning disable IDE0047 // Or IDE0048
// The code that's violating the rule is on this line.
#pragma warning restore IDE0047 // Or IDE0048

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.IDE0047.severity = none
dotnet_diagnostic.IDE0048.severity = none

Para desabilitar todas as regras de estilo de código, defina a severidade da categoria Style como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

Para obter mais informações, confira Como suprimir avisos de análise de código.

Confira também