Parameter- och argumentmatchningsfel
Kompilatorn genererar följande fel när det inte finns något argument för en formell parameter, eller om argumentet inte är giltigt för den parametern:
- CS0182: Ett attributargument måste vara ett konstant uttryck,
typeof
uttryck eller matrisskapande uttryck av en attributparametertyp - CS0591: Ogiltigt värde för argument till attribut
- CS0599: Ogiltigt värde för det namngivna attributargumentet "argument"
- CS0617: Inte ett giltigt namngivet attributargument. Namngivna attributargument måste vara fält som inte är skrivskyddade, statiska eller beständiga eller skrivskyddade egenskaper som är offentliga och inte statiska.
- CS0633: Argumentet till attributet måste vara en giltig identifierare
- CS0643: Duplicera namngivet attributargument
- CS0655: Inte ett giltigt namngivet attributargument eftersom det inte är en giltig attributparametertyp
- CS0839: Argumentet saknas.
- CS1016: Namngivet attributargument förväntas
- CS1739: Den bästa överlagringen för har inte en parameter med namnet
- CS1740: Namngivet argument kan inte anges flera gånger
- CS1742: En matrisåtkomst kanske inte har någon namngiven argumentspecificerare
- CS1744: Namngivet argument anger en parameter för vilken ett positionsargument redan har angetts
- CS1746: Ombudet har ingen parameter med namnet "name"
- CS7036: Det finns inget argument som motsvarar den obligatoriska parametern
- CS7067: Attributkonstruktorparametern är valfri, men inget standardparametervärde har angetts.
- CS8324: Namngivna argumentspecifikationer måste visas när alla fasta argument har angetts i ett dynamiskt anrop.
- CS8905: En funktionspekare kan inte anropas med namngivna argument.
- CS8943: null är inte ett giltigt parameternamn. Om du vill få åtkomst till mottagaren av en instansmetod använder du den tomma strängen som parameternamn.
- CS8944: Metoden är inte en instansmetod, mottagaren kan inte vara ett interpolerat stränghanterarargument.
- CS8945: Inte ett giltigt parameternamn.
- CS8948:
InterpolatedStringHandlerArgumentAttribute
argument kan inte referera till parametern som attributet används på. - CS8949: Den
InterpolatedStringHandlerArgumentAttribute
tillämpade parametern är felaktigt formaterad och kan inte tolkas. Konstruera en instans av den manuellt. - CS8950: Parametern är ett argument till den interpolerade stränghanterarkonverteringen för parametern, men motsvarande argument anges efter det interpolerade stränguttrycket. Ändra ordning på argumenten.
- CS8951: Parametern tillhandahålls inte uttryckligen, men används som ett argument till den interpolerade stränghanterarkonverteringen för parametern.
- CS8964: Får
CallerArgumentExpressionAttribute
endast tillämpas på parametrar med standardvärden - CS8965: Den
CallerArgumentExpressionAttribute
tillämpade parametern har ingen effekt eftersom den är självrefererande. - CS8966: Kommer
CallerArgumentExpressionAttribute
inte att ha någon effekt eftersom den gäller för en medlem som används i kontexter som inte tillåter valfria argument
Följande allmänna fel utfärdas när kompilatorn inte kan matcha argument med alla medlemsparametrar:
- CS0839: Argumentet saknas.
- CS7036: Det finns inget argument som motsvarar den obligatoriska parametern
Dessa fel är allmänna: Kompilatorn kan inte matcha argumenten som anges i ett metodanrop till de obligatoriska parametrarna för metoden. Kontrollera följande orsaker:
- Se till att du har inkluderat alla nödvändiga argument.
- Kontrollera att argumenten är i rätt ordning.
- Kontrollera att alla argument är av rätt typ.
- Kontrollera att reglerna för överlagringsmatchning har valt den metod som du förväntade dig.
Du kan också se CS7036 om du skrev överlagrade lokala funktioner. Lokala funktioner kan inte överbelastas. Kompilatorn känner bara igen den första lokala funktionen med det namnet. Kontrollera om du tänkte anropa en annan lokal funktion.
Dessa fel visas ofta med annan diagnostik som kan hjälpa dig att diagnostisera rätt orsak.
Kompilatorn utfärdar dessa fel när ett argument till en attributkonstruktor är felaktigt:
- CS0182: Ett attributargument måste vara ett konstant uttryck,
typeof
uttryck eller matrisskapande uttryck av en attributparametertyp - CS0591: Ogiltigt värde för argument till attribut
- CS0599: Ogiltigt värde för det namngivna attributargumentet "argument"
- CS0617: Inte ett giltigt namngivet attributargument. Namngivna attributargument måste vara fält som inte är skrivskyddade, statiska eller beständiga eller skrivskyddade egenskaper som är offentliga och inte statiska.
- CS0633: Argumentet till attributet måste vara en giltig identifierare
- CS0643: Duplicera namngivet attributargument
- CS0655: inte ett giltigt namngivet attributargument eftersom det inte är en giltig attributparametertyp
Om du använder attributdefinitionen System.AttributeUsageAttribute kontrollerar du att de tillåtna värdena inte är ömsesidigt uteslutande. Kontrollera att typen och ordningen på argumenten till attributet är korrekta. Kontrollera att texten i strängargumenten är giltig. För många attribut måste argumentet vara en giltig C#-identifierare. Argument för att attributkonstruktorer måste vara kompileringskonstanter. Därför är de begränsade till typer som stöder literalkonstanter. Dessutom tillåts inte följande typer som tillåter literalkonstanter som attributparametrar:
Du kan inte ange upprepade namngivna argument med samma parameternamn. Du kan bara ange tillgängliga egenskaper när du initierar ett attribut. Du kan inte ange privata egenskaper.
Kompilatorn utfärdar följande fel för felaktig användning av namngivna och valfria argument:
- CS1016: Namngivet attributargument förväntas
- CS1739: Den bästa överlagringen för har inte en parameter med namnet
- CS1740: Namngivet argument kan inte anges flera gånger
- CS1742: En matrisåtkomst kanske inte har någon namngiven argumentspecificerare
- CS1744: Namngivet argument anger en parameter för vilken ett positionsargument redan har angetts
- CS1746: Ombudet har ingen parameter med namnet "name"
- CS7067: Attributkonstruktorparametern är valfri, men inget standardparametervärde har angetts.
- CS8324: Namngivna argumentspecifikationer måste visas när alla fasta argument har angetts i ett dynamiskt anrop.
- CS8905: En funktionspekare kan inte anropas med namngivna argument.
Kontrollera följande orsaker till dessa fel:
- Parameternamnet för det namngivna argumentet är felaktigt.
- Den valda överlagringen har ingen parameter som matchar det namngivna argumentet.
- Ett parameternamn upprepas på fler än ett argument.
- Ett positionellt argument (namnlöst) visas efter namngivna argument.
- Namngivna argument tillåts inte för matrisindexparametrar.
Kompilatorn utfärdar följande fel när du angav en interpolerad stränghanterare felaktigt.
- CS8943: null är inte ett giltigt parameternamn. Om du vill få åtkomst till mottagaren av en instansmetod använder du den tomma strängen som parameternamn.
- CS8944: Inte en instansmetod, mottagaren kan inte vara ett interpolerat stränghanterarargument.
- CS8945: Inte ett giltigt parameternamn.
- CS8948:
InterpolatedStringHandlerArgumentAttribute
argument kan inte referera till parametern som attributet används på. - CS8949: Den
InterpolatedStringHandlerArgumentAttribute
tillämpade parametern är felaktigt formaterad och kan inte tolkas. Konstruera en instans manuellt. - CS8950: Parametern är ett argument till den interpolerade stränghanterarkonverteringen för parametern, men motsvarande argument anges efter det interpolerade stränguttrycket.
- CS8951: Parametern tillhandahålls inte uttryckligen, men används som ett argument till den interpolerade stränghanterarkonverteringen för parametern.
En interpolerad stränghanterare är en mönsterbaserad konstruktion. Det är viktigt att få mönstret korrekt. Läs funktionsspecifikationen eller följ självstudien om hur du skapar en interpolerad stränghanterare.
Kompilatorn utfärdar följande fel vid felaktig användning av System.Runtime.CompilerServices.CallerArgumentExpressionAttribute:
- CS8964: Får
CallerArgumentExpressionAttribute
endast tillämpas på parametrar med standardvärden
Kompilatorn utfärdar dessutom följande varningar om felaktig användning av CallerArgumentExpressionAttribute
:
- CS8965: Den
CallerArgumentExpressionAttribute
tillämpade parametern har ingen effekt eftersom den är självrefererande. - CS8966: Kommer
CallerArgumentExpressionAttribute
inte att ha någon effekt eftersom den gäller för en medlem som används i kontexter som inte tillåter valfria argument
Alla parametrar som har kommenterats med CallerArgumentExpression
attributet måste ha ett standardvärde.
Feedback om .NET
.NET är ett öppen källkod projekt. Välj en länk för att ge feedback: