Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Fouten en waarschuwingen met betrekking tot de
Er zijn enkele fouten met betrekking tot de lock instructie en threadsynchronisatie:
- CS0225: De parameter params moet een eendimensionale matrix zijn of een geldig verzamelingstype hebben
- CS0231: Een parameter voor parameters moet de laatste parameter in een formele parameterlijst zijn.
- CS0466: 'method1' mag geen parameter hebben omdat 'method2' niet
- CS0674: Niet gebruiken
System.ParamArrayAttributeofSystem.ParamArrayAttribute/System.Runtime.CompilerServices.ParamCollectionAttribute. Gebruik in plaats daarvan hetparamstrefwoord. - CS0758: Beide declaraties van gedeeltelijke methoden moeten een
paramsparameter gebruiken of geen van beide mag eenparamsparameter gebruiken - CS1104: Een parametermatrix kan niet worden gebruikt met
thismodifier voor een extensiemethode. - CS1611: De parameter params kan niet worden gedeclareerd als in
refofout - CS1670:
paramsis niet geldig in deze context - CS1751: Kan geen standaardwaarde opgeven voor een parametermatrix.
- CS9218: De typeargumenten voor de methode kunnen niet worden afgeleid van het gebruik omdat een argument met dynamisch type wordt gebruikt en de methode een verzamelingsparameter voor niet-matrixparameters heeft. Geef expliciet de typeargumenten op.
- CS9223: Het maken van paramsverzameling resulteert in een oneindige keten van aanroep van constructor.
- CS9224: Methode kan niet minder zichtbaar zijn dan het lid met de verzameling params.
- CS9225: Constructor verlaat vereist lid niet-geïnitialiseerd.
- CS9227: Type bevat geen definitie voor een geschikte instantiemethode
Add. - CS9228: Verzamelingstype niet-matrixparams moet een toepasselijke constructor hebben die zonder argumenten kan worden aangeroepen.
Regels voor methodedeclaratie
De volgende fouten geven aan dat u een params modifier gebruikt voor een parameter wanneer de params wijzigingsfunctie niet is toegestaan in die context:
- CS0231: Een parameter voor parameters moet de laatste parameter in een formele parameterlijst zijn.
- CS1104: Een parametermatrix kan niet worden gebruikt met
thismodifier voor een extensiemethode. - CS1611: De parameter params kan niet worden gedeclareerd als in
refofout - CS1670:
paramsis niet geldig in deze context - CS1751: Kan geen standaardwaarde opgeven voor een parametermatrix.
De compiler dwingt de volgende regels af voor het gebruik van de params wijzigingsfunctie voor een methodeparameter:
- De
paramswijzigingsfunctie is alleen toegestaan voor de laatste parameter in een formele parameterlijst. Dit omvat parameters met een standaardwaarde. - U kunt geen standaardargument voor de parameter opnemen wanneer de
paramswijzigingsfunctie wordt gebruikt. - De
paramswijzigingsfunctie kan niet worden toegepast op referentieparameter. Een verwijzingsparameter is een parameter met dein,ref readonlyrefofoutmodifier. - De
paramsmodifier kan niet worden gecombineerd met dethismodifier voor een extensiemethode. - De
paramswijzigingsfunctie kan niet worden gebruikt voor een overbelaste operator.
In versies vóór C# 12 kan de params wijzigingsfunctie niet worden gebruikt voor de parameter van een anonieme methode of lambda-expressie.
Parameter- en argumenttyperegels
De volgende fouten geven aan dat het type parameter waarmee wordt gebruikt params , ongeldig is:
- CS9218: De typeargumenten voor de methode kunnen niet worden afgeleid van het gebruik omdat een argument met dynamisch type wordt gebruikt en de methode een verzamelingsparameter voor niet-matrixparameters heeft. Geef expliciet de typeargumenten op.
- CS0225: De parameter params moet een eendimensionale matrix zijn of een geldig verzamelingstype hebben
- CS9227: Type bevat geen definitie voor een geschikte instantiemethode
Add. - CS9228: Verzamelingstype niet-matrixparams moet een toepasselijke constructor hebben die zonder argumenten kan worden aangeroepen.
In versies vóór C# 13 is de params modifier alleen toegestaan voor enkelvoudige matrices. Er waren geen andere typen geldig.
Vanaf C# 13 kan elk geldig verzamelingstype worden gebruikt. Er blijven echter enkele beperkingen bestaan. Het verzamelingstype moet dezelfde regels volgen als het doel van een verzamelingsexpressie.
Andere params-fouten
De volgende fouten geven andere problemen aan met het gebruik van de params wijzigingsfunctie:
- CS0466: 'method1' mag geen parameter hebben omdat 'method2' niet
- CS0674: Niet gebruiken
System.ParamArrayAttributeofSystem.Runtime.CompilerServices.ParamCollectionAttribute. Gebruik in plaats daarvan hetparamstrefwoord. - CS0758: Beide declaraties van gedeeltelijke methoden moeten een
paramsparameter gebruiken of geen van beide mag eenparamsparameter gebruiken - CS9223: Het maken van paramsverzameling resulteert in een oneindige keten van aanroep van constructor.
- CS9224: Methode kan niet minder zichtbaar zijn dan het lid met de verzameling params.
- CS9225: Constructor verlaat vereist lid niet-geïnitialiseerd.
Een methode die een interface implementeert, moet de params wijzigingsfunctie bevatten als en alleen als het interfacelid de params wijzigingsfunctie heeft. Op dezelfde manier moeten beide declaraties van een partial methode de params modifier bevatten, of geen enkele kan de params wijzigingsfunctie bevatten.
U moet de params wijzigingsfunctie gebruiken. U kunt de equivalente kenmerken niet toepassen of System.ParamArrayAttribute System.Runtime.CompilerServices.ParamCollectionAttribute.
De compiler genereert een van de laatste drie fouten in de voorgaande lijst wanneer de code die is gegenereerd om het verzamelingstype te maken, ongeldig is:
- De compiler verzendt CS9223 wanneer de code die wordt verzonden om de verzameling te maken ook een verzameling params van hetzelfde type bevat. Normaal gesproken gebruikt de
Addmethode eenparamsverzameling van hetzelfde type. - De compiler verzendt CS9224 wanneer de
Createmethode voor het verzamelingstype minder toegankelijk is dan de methode die deparamsparameter van het verzamelingstype gebruikt. - De compiler verzendt CS9225 wanneer het verzamelingstype een vereist lid heeft en de parameterloze constructor dat lid niet initialiseert en de System.Diagnostics.CodeAnalysis.SetsRequiredMembersAttribute on-parameterloze constructor heeft.