Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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,
typeof
expressão ou expressão de criação de matriz de um tipo de parâmetro de atributo - CS0591: Valor inválido para o argumento a atribuir
- CS0599: Valor inválido para o argumento de atributo nomeado 'argumento'
- CS0617: Não é um argumento de atributo nomeado válido. Os argumentos de atributo nomeado devem ser campos que não são somente leitura, 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 tem um parâmetro chamado
- CS1740: Argumento nomeado não pode ser especificado várias vezes
- CS1742: Um acesso à 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 dado
- CS1746: O delegado não tem um parâmetro chamado 'nome'
- CS7036: Não há nenhum argumento dado que corresponde ao parâmetro necessário
- CS7067: O parâmetro do construtor Attribute é opcional, mas nenhum valor de parâmetro padrão foi especificado.
- CS8324: As especificações de argumento nomeado devem aparecer depois que todos os argumentos fixos tiverem sido especificados em uma chamada dinâmica.
- CS8905: Um ponteiro de função não pode ser chamado com argumentos nomeados.
- CS8943: null não é um nome de parâmetro válido. Para obter acesso ao recetor de um método de instância, use a cadeia de caracteres vazia como o nome do parâmetro.
- CS8944: Método não é um método de instância, o recetor não pode ser um argumento de manipulador de cadeia de caracteres interpolado.
- CS8945: Não é um nome de parâmetro válido.
- CS8948:
InterpolatedStringHandlerArgumentAttribute
os argumentos não podem se referir ao parâmetro no qual o atributo é usado. - CS8949: O
InterpolatedStringHandlerArgumentAttribute
parâmetro aplicado é malformado e não pode ser interpretado. Construa uma instância dele manualmente. - CS8950: Parâmetro é um argumento para a conversão do 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 do manipulador de cadeia de caracteres interpolado no parâmetro.
- CS8964: O
CallerArgumentExpressionAttribute
só pode ser aplicado a parâmetros com valores padrão - CS8965: O
CallerArgumentExpressionAttribute
aplicado ao parâmetro não terá efeito porque é autorreferencial. - CS8966: O
CallerArgumentExpressionAttribute
não terá efeito porque se aplica a um membro que é usado em contextos que não permitem argumentos opcionais
Argumento em falta
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 dado que corresponde ao parâmetro necessário
Esses erros são gerais: O compilador não pode corresponder os argumentos fornecidos em uma chamada de método para os parâmetros necessários do método. Verifique as seguintes causas:
- Certifique-se de que incluiu todos os argumentos necessários.
- Verifique se os argumentos estão na ordem correta.
- Certifique-se de que todos os argumentos são do tipo correto.
- Certifique-se de que as regras de resolução de sobrecarga escolheram o método esperado.
Você também pode ver CS7036 se você escreveu funções locais sobrecarregadas. As funções locais não podem ser sobrecarregadas. O compilador só reconhece a primeira função local com esse nome. Verifique se você pretendia 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,
typeof
expressão ou expressão de criação de matriz de um tipo de parâmetro de atributo - CS0591: Valor inválido para o argumento a atribuir
- CS0599: Valor inválido para o argumento de atributo nomeado 'argumento'
- CS0617: Não é um argumento de atributo nomeado válido. Os argumentos de atributo nomeado devem ser campos que não são somente leitura, 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
Se você usar a System.AttributeUsageAttribute definição de atributo on, 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 da cadeia de caracteres é válido. Para muitos atributos, o argumento deve ser um identificador C# válido. Os argumentos para atribuir construtores devem ser constantes de tempo de compilação. Portanto, eles são limitados a tipos que suportam 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. Não é possível definir propriedades privadas.
Parâmetros e argumentos nomeados e opcionais
O compilador emite os seguintes erros para o uso incorreto de argumentos nomeados e opcionais:
- CS1016: Argumento de atributo nomeado esperado
- CS1739: A melhor sobrecarga para não tem um parâmetro chamado
- CS1740: Argumento nomeado não pode ser especificado várias vezes
- CS1742: Um acesso à 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 dado
- CS1746: O delegado não tem um parâmetro chamado 'nome'
- CS7067: O parâmetro do construtor Attribute é opcional, mas nenhum valor de parâmetro padrão foi especificado.
- CS8324: As especificações de argumento nomeado devem aparecer depois que todos os argumentos fixos tiverem sido especificados em uma chamada dinâmica.
- CS8905: Um ponteiro de função não pode ser chamado com argumentos nomeados.
Verifique as seguintes causas desses erros:
- O nome do parâmetro do argumento nomeado está incorreto.
- A sobrecarga escolhida não tem um parâmetro correspondente 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 interpolado
O compilador emite os seguintes erros quando você especificou um manipulador de cadeia de caracteres interpolado incorretamente.
- CS8943: null não é um nome de parâmetro válido. Para obter acesso ao recetor 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 recetor não pode ser um argumento de manipulador de cadeia de caracteres interpolado.
- CS8945: Não é um nome de parâmetro válido.
- CS8948:
InterpolatedStringHandlerArgumentAttribute
os argumentos não podem se referir ao parâmetro no qual o atributo é usado. - CS8949: O
InterpolatedStringHandlerArgumentAttribute
parâmetro aplicado é malformado e não pode ser interpretado. Construa uma instância manualmente. - CS8950: Parâmetro é um argumento para a conversão do 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 do manipulador de cadeia de caracteres interpolado no parâmetro.
Um manipulador de cadeia de caracteres interpolado é uma construção baseada em padrão. É importante corrigir o padrão. Consulte a especificação do recurso ou siga o tutorial sobre como criar um manipulador de cadeia de caracteres interpolado.
Informações de depuração do chamador
O compilador emite o seguinte erro em um uso incorreto do System.Runtime.CompilerServices.CallerArgumentExpressionAttribute:
- CS8964: O
CallerArgumentExpressionAttribute
só 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: O
CallerArgumentExpressionAttribute
aplicado ao parâmetro não terá efeito porque é autorreferencial. - CS8966: O
CallerArgumentExpressionAttribute
não terá efeito porque se aplica a um membro que é usado em contextos que não permitem argumentos opcionais
Qualquer parâmetro anotado com o CallerArgumentExpression
atributo deve ter um valor padrão.