Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O compilador gera os seguintes erros quando não há nenhum argumento fornecido para um parâmetro formal ou o argumento não é válido para esse parâmetro:
- CS0182: Um argumento de atributo deve ser uma expressão constante, expressão
typeofou expressão de criação de matriz de um tipo de parâmetro de atributo - CS0591: Valor inválido para o argumento do atributo
- CS0599: valor inválido para o argumento de atributo nomeado 'argument'
- CS0617: Não é um argumento de atributo nomeado válido. Os argumentos de atributo nomeados devem ser campos que não são readonly, estáticos ou const ou propriedades de leitura-gravação que são públicas e não estáticas.
- CS0633: O argumento para o atributo deve ser um identificador válido
- CS0643: argumento de atributo nomeado duplicado
- CS0655: Não é um argumento de atributo nomeado válido porque não é um tipo de parâmetro de atributo válido
- CS0839: argumento ausente.
- CS1016: argumento de atributo nomeado esperado
- CS1739: a melhor sobrecarga para não ter um parâmetro nomeado
- CS1740: Argumento nomeado não pode ser especificado várias vezes
- CS1742: Um acesso de matriz pode não ter um especificador de argumento nomeado
- CS1744: argumento Nomeado especifica um parâmetro para o qual um argumento posicional já foi fornecido
- CS1746: O delegado não tem um parâmetro chamado 'name'
- CS7036: Não há nenhum argumento fornecido que corresponda ao parâmetro necessário
- CS7067: o parâmetro do construtor de atributo é opcional, mas nenhum valor de parâmetro padrão foi especificado.
- CS8324: Especificações de argumento nomeado devem aparecer depois que todos os argumentos fixos tiverem sido especificados em uma invocação dinâmica.
- CS8905: um ponteiro de função não pode ser chamado com argumentos nomeados.
- CS8943: nulo não é um nome de parâmetro válido. Para obter acesso ao receptor de um método de instância, use a cadeia de caracteres vazia como o nome do parâmetro.
- CS8944: O método não é um método de instância, portanto, o receptor não pode ser um argumento de manipulador de cadeia de caracteres interpolada.
- CS8945: Não é um nome de parâmetro válido.
- CS8948:
InterpolatedStringHandlerArgumentAttributeargumentos não podem se referir ao parâmetro no qual o atributo é usado. - CS8949: O
InterpolatedStringHandlerArgumentAttributeaplicado ao parâmetro é malformado e não pode ser interpretado. Construa uma instância dele manualmente. - CS8950: parâmetro é um argumento para a conversão de manipulador de cadeia de caracteres interpolada no parâmetro, mas o argumento correspondente é especificado após a expressão de cadeia de caracteres interpolada. Reordene os argumentos.
- CS8951: o parâmetro não é fornecido explicitamente, mas é usado como um argumento para a conversão de manipulador de cadeia de caracteres interpolada no parâmetro.
- CS8964: O
CallerArgumentExpressionAttributesó pode ser aplicado a parâmetros com valores padrão - CS8965: o
CallerArgumentExpressionAttributeaplicado ao parâmetro não terá efeito porque ele é auto-referencial. - CS8966: O
CallerArgumentExpressionAttributenão terá efeito porque se aplica a um membro que é usado em contextos que não permitem argumentos opcionais
Argumento ausente
Os seguintes erros gerais são emitidos quando o compilador não pode corresponder argumentos a todos os parâmetros de membro:
- CS0839: argumento ausente.
- CS7036: Não há nenhum argumento fornecido que corresponda ao parâmetro necessário
Esses erros são gerais: o compilador não pode corresponder aos argumentos fornecidos em uma chamada de método aos parâmetros necessários do método. Verifique as seguintes causas:
- Verifique se você incluiu todos os argumentos necessários.
- Verifique se os argumentos estão na ordem correta.
- Verifique se todos os argumentos são do tipo correto.
- Verifique se as regras de resolução de sobrecarga escolheram o método esperado.
Você também poderá ver CS7036 se tiver escrito funções locais sobrecarregadas. As funções locais não podem ser sobrecarregadas. O compilador reconhece apenas a primeira função local com esse nome. Verifique se você pretende chamar uma função local diferente.
Esses erros geralmente aparecem com outros diagnósticos que podem ajudar a diagnosticar a causa correta.
Argumentos para atributos
O compilador emite esses erros quando um argumento para um construtor de atributo está incorreto:
- CS0182: Um argumento de atributo deve ser uma expressão constante, expressão
typeofou expressão de criação de matriz de um tipo de parâmetro de atributo - CS0591: Valor inválido para argumento de atributo
- CS0599: valor inválido para o argumento de atributo nomeado 'argument'
- CS0617: não é um argumento de atributo nomeado válido. Os argumentos de atributo nomeados devem ser campos que não são somente leitura, estáticos ou constante ou propriedades de leitura-gravação que são públicas e não estáticas.
- CS0633: O argumento para o atributo deve ser um identificador válido
- CS0643: argumento de atributo nomeado duplicado
- CS0655: não é um argumento de atributo nomeado válido porque não é um tipo de parâmetro de atributo válido
Se você usar o System.AttributeUsageAttribute em sua definição de atributo, verifique se os valores permitidos não são mutuamente exclusivos. Verifique se o tipo e a ordem dos argumentos para o atributo estão corretos. Verifique se o texto dos argumentos de cadeia de caracteres é válido. Para muitos atributos, o argumento deve ser um identificador C# válido. Os argumentos para construtores de atributo devem ser constantes de tempo de compilação. Portanto, eles são limitados a tipos que dão suporte a constantes literais. Além disso, os seguintes tipos que permitem constantes literais não são permitidos como parâmetros de atributo:
Não é possível especificar argumentos nomeados repetidos com o mesmo nome de parâmetro. Você só pode definir propriedades acessíveis ao inicializar um atributo. Você não pode definir propriedades privadas.
Parâmetros e argumentos nomeados e opcionais
O compilador emite os seguintes erros para uso incorreto de argumentos nomeados e opcionais:
- CS1016: argumento de atributo nomeado esperado
- CS1739: a melhor sobrecarga para não ter um parâmetro nomeado
- CS1740: argumento nomeado não pode ser especificado várias vezes
- CS1742: Um acesso de matriz pode não ter um especificador de argumento nomeado
- CS1744: argumento nomeado especifica um parâmetro para o qual um argumento posicional já foi fornecido
- CS1746: O delegado não tem um parâmetro chamado 'name'
- CS7067: o parâmetro do construtor de atributo é opcional, mas nenhum valor de parâmetro padrão foi especificado.
- CS8324: Especificações de argumento nomeado devem aparecer depois que todos os argumentos fixos tiverem sido especificados em uma invocação dinâmica.
- CS8905: um ponteiro de função não pode ser chamado com argumentos nomeados.
Verifique as seguintes causas destes erros:
- O nome do parâmetro do argumento nomeado está incorreto.
- A sobrecarga escolhida não tem um parâmetro que corresponda ao argumento nomeado.
- Um nome de parâmetro é repetido em mais de um argumento.
- Um argumento posicional (sem nome) aparece após argumentos nomeados.
- Argumentos nomeados não são permitidos para parâmetros de índice de matriz.
Manipulador de cadeia de caracteres interpolada
O compilador emite os seguintes erros quando você especificou um manipulador de cadeia de caracteres interpolado incorretamente.
- CS8943: nulo não é um nome de parâmetro válido. Para obter acesso ao receptor de um método de instância, use a cadeia de caracteres vazia como o nome do parâmetro.
- CS8944: não é um método de instância, o receptor não pode ser um argumento de manipulador de cadeia de caracteres interpolado.
- CS8945: Não é um nome de parâmetro válido.
- CS8948:
InterpolatedStringHandlerArgumentAttributeargumentos não podem se referir ao parâmetro no qual o atributo é usado. - CS8949: O
InterpolatedStringHandlerArgumentAttributeaplicado ao parâmetro é malformado e não pode ser interpretado. Construa uma instância manualmente. - CS8950: o parâmetro é um argumento para a conversão de manipulador de cadeia de caracteres interpolada no parâmetro, mas o argumento correspondente é especificado após a expressão de cadeia de caracteres interpolada.
- CS8951: o parâmetro não é fornecido explicitamente, mas é usado como um argumento para a conversão de manipulador de cadeia de caracteres interpolada no parâmetro.
Um manipulador de cadeia de caracteres interpolado é um constructo baseado em padrão. É importante corrigir o padrão. Consulte a especificação de recurso ou siga o tutorial sobre como criar um manipulador de cadeia de caracteres interpolado.
Informações de depuração de chamador
O compilador emite o seguinte erro em um uso incorreto do System.Runtime.CompilerServices.CallerArgumentExpressionAttribute:
- CS8964: O
CallerArgumentExpressionAttributesó pode ser aplicado a parâmetros com valores padrão
Além disso, o compilador emite os seguintes avisos sobre um uso incorreto do CallerArgumentExpressionAttribute:
- CS8965: A
CallerArgumentExpressionAttributeaplicada ao parâmetro não terá efeito porque é auto-referencial. - CS8966: O
CallerArgumentExpressionAttributenão terá efeito porque se aplica a um membro usado em contextos que não permitem argumentos opcionais
Qualquer parâmetro anotado com o atributo CallerArgumentExpression deve ter um valor padrão.