Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El compilador genera los siguientes errores cuando no hay ningún argumento proporcionado para un parámetro formal o el argumento no es válido para ese parámetro:
- CS0182: Un argumento de atributo debe ser una expresión constante, una expresión
typeofo una expresión de creación de matrices de un tipo de parámetro de atributo - CS0591: valor no válido para el argumento para el atributo
- CS0599:valor no válido para el atributo nombrado 'argument'
- CS0617: No es un argumento de atributo con nombre válido. Los argumentos de atributo con nombre deben ser campos que no son de solo lectura, estáticos o const, o propiedades de lectura y escritura que son públicas y no estáticas.
- CS0633: El argumento para el atributo debe ser un identificador válido
- CS0643: Argumento de atributo con nombre duplicado
- CS0655: No es un argumento de atributo con nombre válido porque no es un tipo de parámetro de atributo válido
- CS0839: falta argumento.
- CS1016: Se esperaba un argumento de atributo con nombre
- CS1739: La mejor sobrecarga para no tiene un parámetro con nombre
- CS1740: El argumento con nombre no se puede especificar varias veces
- CS1742: Es posible que un acceso de matriz no tenga un especificador de argumentos con nombre
- CS1744 : argumento con nombre especifica un parámetro para el que ya se ha proporcionado un argumento posicional
- CS1746: El delegado no tiene un parámetro denominado "name"
- CS7036 : No hay ningún argumento dado que se corresponda con el parámetro necesario
- CS7067: parámetro del constructor Attribute es opcional, pero no se especificó ningún valor de parámetro predeterminado.
- CS8324: especificaciones de argumentos con nombre deben aparecer después de especificar todos los argumentos fijos en una invocación dinámica.
- CS8905: No se puede llamar a un puntero de función con argumentos con nombre.
- CS8943: null no es un nombre de parámetro válido. Para obtener acceso al receptor de un método de instancia, use la cadena vacía como nombre del parámetro.
- CS8944: Method no es un método de instancia, por lo que el receptor no puede ser un argumento de controlador de cadenas interpoladas.
- CS8945: No es un nombre de parámetro válido.
- CS8948: los argumentos
InterpolatedStringHandlerArgumentAttributeno pueden hacer referencia al parámetro en el que se usa el atributo. - CS8949: El
InterpolatedStringHandlerArgumentAttributeaplicado al parámetro tiene un formato incorrecto y no se puede interpretar. Construya una instancia de ella manualmente. - CS8950: El parámetro es un argumento de la conversión del controlador de cadenas interpoladas en el parámetro, pero el argumento correspondiente se especifica después de la expresión de cadena interpolada. Reordene los argumentos.
- CS8951: El parámetro no se ha proporcionado explícitamente, pero se usa como argumento de la conversión del controlador de cadenas interpoladas en el parámetro.
- CS8964: La
CallerArgumentExpressionAttributesolo se puede aplicar a parámetros con valores predeterminados - CS8965: El
CallerArgumentExpressionAttributeaplicado al parámetro no tendrá ningún efecto porque es autoreferencial. - CS8966 : El
CallerArgumentExpressionAttributeno tendrá ningún efecto porque se aplica a un miembro que se usa en contextos que no permiten argumentos opcionales
Falta el argumento
Los siguientes errores generales se emiten cuando el compilador no puede asignar argumentos a todos los parámetros de los miembros:
- CS0839: Argumento falta.
- CS7036: No hay ningún argumento dado que corresponde al parámetro necesario
Estos errores son generales: el compilador no puede coincidir con los argumentos proporcionados en una llamada de método a los parámetros necesarios del método. Compruebe las siguientes causas:
- Asegúrese de incluir todos los argumentos necesarios.
- Asegúrese de que los argumentos están en el orden correcto.
- Asegúrese de que todos los argumentos son el tipo correcto.
- Asegúrese de que las reglas de resolución de sobrecarga elijan el método esperado.
También podrías ver CS7036 si escribiste funciones locales sobrecargadas. Las funciones locales no se pueden sobrecargar. El compilador solo reconoce la primera función local con ese nombre. Compruebe si quiere llamar a una función local diferente.
Estos errores a menudo aparecen con otros diagnósticos que pueden ayudar a diagnosticar la causa correcta.
Argumentos para atributos
El compilador emite estos errores cuando un argumento para un constructor de atributos es incorrecto:
- CS0182: Un argumento de atributo debe ser una expresión constante, una expresión
typeofo una expresión de creación de matrices de un tipo de parámetro de atributo - CS0591: Valor no válido para el argumento del atributo
- CS0599: Valor no válido para el argumento 'argument' del atributo con nombre
- CS0617: No un argumento de atributo con nombre válido. Los argumentos de atributo con nombre deben ser campos que no son de solo lectura, estáticos o const, o propiedades de lectura y escritura que son públicas y no estáticas.
- CS0633: El argumento para el atributo debe ser un identificador válido
- CS0643: Argumento de atributo con nombre duplicado
- CS0655: no es un argumento de atributo con nombre válido porque no es un tipo de parámetro de atributo válido
Si usa la System.AttributeUsageAttribute en la definición de atributo, asegúrese de que los valores permitidos no son mutuamente excluyentes. Compruebe que el tipo y el orden de los argumentos para el atributo son correctos. Asegúrese de que el texto de los argumentos de cadena es válido. Para muchos atributos, el argumento debe ser un identificador de C# válido. Los argumentos para los constructores de atributos deben ser constantes en tiempo de compilación. Por lo tanto, se limitan a los tipos que admiten constantes literales. Además, los siguientes tipos que permiten constantes literales no se permiten como parámetros de atributo:
No se pueden especificar argumentos con nombre repetidos con el mismo nombre de parámetro. Solo puede establecer propiedades accesibles al inicializar un atributo. No se pueden establecer propiedades privadas.
Parámetros y argumentos con nombre y opcionales
El compilador emite los siguientes errores debido al uso incorrecto de argumentos con nombre y opcionales.
- CS1016: Se esperaba un argumento de atributo con nombre
- CS1739: La mejor sobrecarga para no tiene un parámetro con nombre
- CS1740: El argumento con nombre no se puede especificar varias veces
- CS1742: Es posible que un acceso de matriz no tenga un especificador de argumentos con nombre
- CS1744: El argumento nombrado especifica un parámetro al que ya se le ha dado un argumento posicional
- CS1746: El delegado no tiene un parámetro denominado "name"
- CS7067: el parámetro del constructor "Attribute" es opcional, pero no se especificó ningún valor de parámetro predeterminado.
- CS8324: Las especificaciones de argumento con nombre deben aparecer después de haber especificado todos los argumentos fijos en una invocación dinámica.
- CS8905: No se puede llamar a un puntero de función con argumentos con nombre.
Compruebe las siguientes causas de estos errores:
- El nombre del parámetro en el argumento nombrado es incorrecto.
- La sobrecarga elegida no tiene un parámetro que coincida con el argumento nombrado.
- Se repite un nombre de parámetro en más de un argumento.
- Aparece un argumento posicional (sin nombre) después de los argumentos con nombre.
- No se permiten argumentos con nombre para los parámetros de índice de matriz.
Controlador de cadenas interpoladas
El compilador emite los siguientes errores al especificar un controlador de cadenas interpolado incorrectamente.
- CS8943: null no es un nombre de parámetro válido. Para obtener acceso al receptor de un método de instancia, use la cadena vacía como nombre del parámetro.
- CS8944: No es un método de instancia, por lo que el receptor no puede ser un argumento de un controlador de cadenas interpoladas.
- CS8945: No es un nombre de parámetro válido.
- CS8948: los argumentos
InterpolatedStringHandlerArgumentAttributeno pueden hacer referencia al parámetro en el que se usa el atributo. - CS8949: El
InterpolatedStringHandlerArgumentAttributeaplicado al parámetro tiene un formato incorrecto y no se puede interpretar. Construya una instancia manualmente. - CS8950: El parámetro es un argumento de la conversión del controlador de cadenas interpoladas en el parámetro, pero el argumento correspondiente se especifica después de la expresión de cadena interpolada.
- CS8951: El parámetro no se ha proporcionado explícitamente, pero se usa como argumento de la conversión del controlador de cadenas interpoladas en el parámetro.
Un controlador de cadenas interpolado es una construcción basada en patrones. Es importante obtener el patrón correcto. Consulte la especificación de características de o siga el tutorial sobre la creación de un controlador de cadenas interpoladas .
Información de depuración de llamador
El compilador emite el siguiente error en un uso incorrecto del System.Runtime.CompilerServices.CallerArgumentExpressionAttribute:
- CS8964: La
CallerArgumentExpressionAttributesolo se puede aplicar a parámetros con valores predeterminados
Además, el compilador emite las siguientes advertencias sobre un uso incorrecto del CallerArgumentExpressionAttribute:
- CS8965: El
CallerArgumentExpressionAttributeaplicado al parámetro no tendrá ningún efecto porque es autoreferencial. - CS8966: El
CallerArgumentExpressionAttributeno tendrá ningún efecto porque se aplica a un miembro que se usa en contextos que no permiten argumentos opcionales
Cualquier parámetro anotado con el atributo CallerArgumentExpression debe tener un valor predeterminado.