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.
In dit artikel worden de volgende compilerfouten en -waarschuwingen behandeld:
- CS0031: Constante waarde 'waarde' kan niet worden geconverteerd naar een 'type'
- CS0056: Inconsistente toegankelijkheid: het retourtype 'type' is minder toegankelijk dan de operator 'operator'
- CS0057: Inconsistente toegankelijkheid: parametertype 'type' is minder toegankelijk dan operator 'operator'
- CS0215: Het retourtype Waar of Onwaar moet bool zijn
- CS0216: Voor de operator 'operator' moet ook een overeenkomende operator 'missing_operator' worden gedefinieerd
- CS0217: Als u van toepassing wilt zijn als een kortsluitingsoperator, moet een door de gebruiker gedefinieerde logische operator (operator) hetzelfde retourtype hebben als het type van de 2 parameters.
- CS0218: Het type ('type') moet declaraties van operator true en operator false bevatten
- CS0220: De bewerking loopt over bij het compileren in de gecontroleerde modus
- CS0221: Constante waarde 'waarde' kan niet worden geconverteerd naar een 'type' (gebruik de syntaxis 'unchecked' om dit te negeren)
-
CS0448: Het retourtype voor de
++of---operator moet het omvattende type zijn of hiervan afgeleid zijn - CS0463: Evaluatie van de decimale constante expressie is mislukt met fout: 'error'
- CS0543: 'opsomming': de opsommingswaarde is te groot om in het type te passen
- CS0552: 'conversieroutine': door de gebruiker gedefinieerde conversie naar/van interface
- CS0553: 'conversieroutine': door de gebruiker gedefinieerde conversie naar/van basisklasse
- CS0554: 'conversieroutine': door de gebruiker gedefinieerde conversie naar/van afgeleide klasse
- CS0555: Een door de gebruiker gedefinieerde operator kan geen object van het omsluittype accepteren en converteren naar een object van hetzelfde omsluittype
- CS0556: Een door de gebruiker gedefinieerde conversie moet een conversie naar of van het omsluitende type zijn
- CS0557: Dubbele door de gebruiker gedefinieerde conversie in type
- CS0558: Door de gebruiker gedefinieerde operator moet worden gedeclareerd als statisch en openbaar
-
CS0559: Het parametertype voor de
++-operator of de---operator moet het omvattende type zijn - CS0562: De parameter van een unaire operator moet het type bevatten
- CS0563: Een van de parameters van een binaire operator moet van het omvattende type zijn
- CS0564: De eerste operand van een overbelaste ploegendienstoperator moet hetzelfde type hebben als het type dat het bevat en het type van de tweede operand moet int zijn
- CS0567: Interfaces mogen geen operators bevatten
- CS0590: Door de gebruiker gedefinieerde operators kunnen geen ongeldige waarde retourneren
- CS0594: Drijvende-komma constante valt buiten het bereik van het type 'type'
- CS0652: Vergelijking met integrale constante is nutteloos; de constante valt buiten het bereik van het type 'type'
- CS0659: 'class' overschrijft Object.Equals(object o) maar overschrijft Object.GetHashCode() niet
-
CS0660: Type definieert
operator ==ofoperator !=maar overschrijftObject.Equals(object o)niet -
CS0661: Type definieert
operator ==ofoperator !=maar overschrijftObject.GetHashCode()niet - CS0715: Statische klassen kunnen geen door de gebruiker gedefinieerde operators bevatten
- CS1021: Integrale constante is te groot
- CS1037: Overbelastingsoperator verwacht
- CS1553: Declaratie is ongeldig; gebruik 'modifier operator <dest-type> (...' in plaats van
- CS8930: Expliciete implementatie van een door de gebruiker gedefinieerde operator moet statisch worden gedeclareerd
- CS8931: Een door de gebruiker gedefinieerde conversie in een interface moet naar of van een typeparameter van het omsluitende type converteren, dat aan het omsluitende type is gebonden
- CS8778: Constante waarde 'waarde' kan 'type' tijdens runtime overlopen (gebruik de syntaxis 'uitgeschakeld' om te overschrijven)
- CS8973: De bewerking kan tijdens runtime overlopen (gebruik de syntaxis 'unchecked' om te overschrijven)
- CS9023: Operator kan niet worden gecontroleerd.
- CS9024: Operator kan niet onbeheerd worden gemaakt.
- CS9025: Voor operator moet ook een overeenkomende niet-gecontroleerde versie worden gedeclareerd.
- CS9027: Onverwacht trefwoord 'uitgeschakeld'.
- CS9308: Door de gebruiker gedefinieerde operator moet openbaar worden gedeclareerd.
- CS9310: Het retourtype voor deze operator moet ongeldig zijn.
- CS9311: Type implementeert geen interfacelid. Het type kan geen lid implementeren omdat een van deze leden geen operator is.
- CS9312: Type kan overgenomen lid niet overschrijven omdat een van deze leden geen operator is.
- CS9313: Overladen samengesteld toewijzingsoperator accepteert één parameter.
- CS9340: Operator kan niet worden toegepast op operanden. De dichtstbijzijnde niet-toe te passen kandidaat wordt weergegeven.
- CS9341: Operator kan niet worden toegepast op operand. De dichtstbijzijnde ongeschikte kandidaat wordt getoond.
- CS9342: Operatorresolutie is dubbelzinnig tussen de volgende leden.
Vereisten voor operatorhandtekening
-
CS0448: Het retourtype voor de
++of--operator moet het bevattende type zijn of ervan afgeleid zijn. -
CS0559: Het parametertype voor de
++of--operator moet het omhullende type zijn. - CS0562: De parameter van een unaire operator moet van het type zijn dat het bevat.
- CS0563: Een van de parameters van een binaire operator moet het omvattende type zijn.
- CS0564: De eerste operand van een overbelaste ploegendienstoperator moet hetzelfde type hebben als het type dat het bevat en het type van de tweede operand moet int zijn.
- CS0567: Interfaces kunnen geen operators bevatten.
- CS0590: Door de gebruiker gedefinieerde operators kunnen geen ongeldige waarde retourneren.
- CS9310: Het retourtype voor deze operator moet ongeldig zijn.
- CS9340: Operator kan niet worden toegepast op operanden. De dichtstbijzijnde ongeschikte kandidaat wordt weergegeven.
- CS9341: Operator kan niet worden toegepast op operand. De dichtstbijzijnde niet van toepassing zijnde kandidaat wordt weergegeven.
- CS9342: Operatorresolutie is dubbelzinnig tussen de volgende elementen.
Elk operatortype heeft specifieke parameter- en retourtypevereisten die zijn gedefinieerd door de taalspecificatie. Zie Operator overloading en Operators in de C#-specificatie voor de volledige regels waarop operators kunnen worden overbelast.
- Wijzig het retourtype van
++- of---operatoren naar het omhullende type of een daarvan afgeleid type (CS0448). De taal vereist dat increment- en decrementoperatoren een waarde retourneren die compatibel is met het type van de container, zodat het resultaat kan worden teruggeschreven naar dezelfde variabele. - Wijzig de parameter van
++of--operators in het type dat het bevat (CS0559). Incrementele en decrementele operators moeten werken op instanties van hun eigen type. - Wijzig de parameter van een unaire operator in het type dat het bevat (CS0562). Unary-operators moeten een operand accepteren van het type dat ze declareert.
- Zorg ervoor dat ten minste één parameter van een binaire operator het type bevat (CS0563). Binaire operators moeten het declaratietype omvatten, zodat de compiler ze via dat type kan oplossen.
- Wijzig de eerste parameter van een shift-operator naar het omvattende type en de tweede parameter naar
int(CS0564). De taal definieert shiftoperators met een specifieke signatuur: het type dat wordt verschoven en een geheel aantal verschuivingen. - Operatordeclaraties van interfaces en naar klassen of structs (CS0567) verplaatsen. Traditionele (niet-statische abstracte) operatordeclaraties zijn niet toegestaan in interfaces. Zie Statische abstracte en virtuele interfacelidfouten voor statische abstracte operators in interfaces.
- Wijzig het retourtype van de operator in een niet-ongeldig type (CS0590). De meeste door de gebruiker gedefinieerde operators moeten een waarde retourneren. De uitzondering is samengestelde toewijzingsoperatoren, waarvoor een
voidretourtype (CS9310) is vereist. - Corrigeer de parametertypen of voeg ontbrekende operatorbelastingen toe, zodat de compiler een overeenkomende operator kan vinden voor de operandtypen die worden gebruikt op de aanroepsite (CS9340, CS9341). Als er geen toepasselijke operator bestaat, toont de compiler de dichtstbijzijnde kandidaat om de niet-overeenkomende problemen te diagnosticeren.
- Voeg expliciete casts toe aan de oproepsite of geef specifiekere overbelastingen op om dubbelzinnigheid te voorkomen wanneer de overbelasting van meerdere operatoren even goed overeenkomt (CS9342).
Belangrijk
De vereisten voor ondertekening voor statische binaire operators en de bijbehorende instance samengestelde toewijzingsoperatoren verschillen. Zorg ervoor dat de handtekening overeenkomt met de gewenste declaratie.
Vereisten voor operatordeclaratie
- CS0558: Door de gebruiker gedefinieerde operator moet statisch en openbaar worden gedeclareerd.
- CS0715: Statische klassen kunnen geen door de gebruiker gedefinieerde operators bevatten.
- CS1037: Overbelastingsoperator verwacht.
- CS1553: Declaratie is niet geldig; gebruik 'modifier operator <dest-type> (...' in plaats van.
- CS9308: Door de gebruiker gedefinieerde operator moet openbaar worden gedeclareerd.
Voor de taal zijn specifieke modifiers en syntaxis vereist voor operatordeclaraties. Zie Operator-overbelasting en door de gebruiker gedefinieerde conversieoperators voor de volledige regels.
- Voeg zowel de
staticalspublicde modifiers toe aan de operatordeclaratie (CS0558, CS9308). Voor de C#-taal moeten alle door de gebruiker gedefinieerde operators zowel statisch als openbaar zijn, zodat ze toegankelijk en aanroepbaar zijn zonder een exemplaar. - Verplaats de operatordeclaratie van een statische klasse naar een niet-statische klasse of struct (CS0715). Statische klassen kunnen geen exemplaren hebben, dus door de gebruiker gedefinieerde operators, die werken op exemplaren van hun type, zijn niet zinvol in statische klassen.
- Vervang het ongeldige operatorsymbool door een geldige overbelastingsoperator (CS1037). Alleen specifieke operators die door de taal zijn gedefinieerd, kunnen overbelast worden.
- Corrigeer de syntaxis om het vereiste conversieoperatorformulier te volgen:
public static implicit operator <dest-type>(<source-type> parameter)ofpublic static explicit operator <dest-type>(<source-type> parameter)(CS1553). De compiler verwacht dat conversieoperators een specifiek declaratiepatroon volgen.
Zie statische abstracte en virtuele interfacelidfouten voor fouten met betrekking tot expliciete interface-implementaties van operators in statische abstracte interfaces.
Inconsistente toegankelijkheid
- CS0056: Inconsistente toegankelijkheid: het retourtype 'type' is minder toegankelijk dan de operator 'operator'.
- CS0057: Inconsistente toegankelijkheid: parametertype 'type' is minder toegankelijk dan operator 'operator'.
Alle typen die in de handtekening van een openbare operator worden gebruikt, moeten ten minste zo toegankelijk zijn als de operator zelf. Zie Access Modifiers en Toegankelijkheidsbeperkingen in de C#-specificatie voor de volledige regels.
- Wijzig het retourtype in een type dat ten minste even toegankelijk is als de operator, of verminder de toegankelijkheid van de operator, zodat deze overeenkomt met het retourtype (CS0056). Een
publicoperator kan een minder toegankelijk type niet beschikbaar maken via de retourwaarde, omdat bellers buiten de assembly het resultaat niet zouden kunnen gebruiken. - Wijzig het parametertype in een type dat minstens zo toegankelijk is als de operator, of verklein de toegankelijkheid van de operator zodat deze overeenkomt met het parametertype (CS0057). Een
publicoperator kan geen minder toegankelijk type als parameter vereisen omdat bellers buiten de assembly het argument niet kunnen opgeven.
Door de gebruiker gedefinieerde conversiebeperkingen
- CS0552: Door de gebruiker gedefinieerde conversie naar/van interface.
- CS0553: Door de gebruiker gedefinieerde conversie naar/van basisklasse.
- CS0554: Door de gebruiker gedefinieerde conversie naar/van afgeleide klasse.
- CS0555: Een door de gebruiker gedefinieerde operator kan geen object van het omsluittype accepteren en omzetten naar een object van het omsluittype.
- CS0556: Een door de gebruiker gedefinieerde conversie moet afkomstig zijn van, of gericht zijn op, het insluittype.
- CS0557: Dubbele gebruikersgedefinieerde conversie van type.
De C#-taal beperkt welke typen kunnen deelnemen aan door de gebruiker gedefinieerde conversies. Zie Door de gebruiker gedefinieerde conversieoperators en conversieoperators in de C#-specificatie voor de volledige regels.
- Verwijder de conversieoperator die wordt geconverteerd naar of van een interfacetype (CS0552). De taal verbiedt door de gebruiker gedefinieerde conversies met interfacetypen, omdat interfaceconversies worden verwerkt via de verwijzingsconversies en boksen van het typesysteem. Gebruik in plaats daarvan expliciete interface-implementaties of helpermethoden.
- Verwijder de conversieoperator die wordt geconverteerd naar of van een basisklasse (CS0553). Conversies tussen een type en de basisklasse bestaan al via impliciete verwijzingsconversies (upcast) en expliciete verwijzingsconversies (downcast), zodat een door de gebruiker gedefinieerde conversie dubbelzinnigheid zou creëren.
- Verwijder de conversieoperator die wordt geconverteerd naar of van een afgeleide klasse (CS0554). Net als bij conversies van basisklassen worden conversies tussen een type en de afgeleide typen ingebouwd in de taal door overerving, waarbij door de gebruiker gedefinieerde conversies een conflict zouden vormen.
- Verwijder de conversieoperator die het omsluittype naar zichzelf converteert (CS0555). Elk type heeft al een impliciete identiteitsconversie naar zichzelf, dus een door de gebruiker gedefinieerde conversie van een type naar hetzelfde type is redundant en is niet toegestaan.
- Wijzig een van de typen in de conversieoperator zodat het bron- of doeltype het insluittype (CS0556) is. Een door de gebruiker gedefinieerde conversie moet betrekking hebben op het type dat het declareert. U kunt geen conversie definiëren tussen twee niet-gerelateerde externe typen in een derde type.
- Verwijder de operator voor dubbele conversie of wijzig een van de dubbele operators, zodat de bron- en doeltypen verschillen van de andere operator (CS0557). Een type kan slechts één impliciete en één expliciete conversie declareren voor een bepaald paar bron- en doeltypen.
Booleaanse operatoren en kortsluitingsoperatoren
- CS0215: Het retourtype waar of onwaar van de operator moet bool zijn.
- CS0216: Voor de operator moet ook een overeenkomende operator worden gedefinieerd.
- CS0217: Om van toepassing te zijn als een operator voor kortsluiting, moet een door de gebruiker gedefinieerde logische operator hetzelfde retourtype hebben als het type van de 2 parameters.
- CS0218: Het type moet declaraties van operator true en operator false bevatten.
De C#-taal vereist specifieke koppelingen en handtekeningen voor Booleaanse operators en evaluatie van kortsluiting. Zie waar- en onwaaroperators, booleaanse logische operators en door de gebruiker gedefinieerde logische operators in de C#-specificatie voor de volledige regels.
- Wijzig het retourtype van
operator trueenoperator falseinbool(CS0215). Deze operators bepalen of een waarde logisch waar of onwaar is, dus de taal vereist dat ze worden geretourneerdbool. - Definieer de overeenkomende gekoppelde operator (CS0216). Voor de taal moeten bepaalde operators in paren worden gedeclareerd:
operator ==metoperator !=,operator <metoperator >,operator <=metoperator >=enoperator truemetoperator false. - Wijzig het retourtype van de door de gebruiker gedefinieerde
&operator of|operator zodat deze overeenkomt met beide parametertypen (CS0217). Voor de evaluatie van kortsluiting (&&en||) vereist de compiler dat het retourtype van de&-operator, beide parametertypen, en het omvattende type allemaal van hetzelfde type zijn. - Voeg beide
operator trueenoperator falsedeclaraties toe aan het type (CS0218). De compiler herschrijft&&en||door gebruik te maken vanoperator true,operator false, en de bijbehorende&- of|-operator, zodat alle drie aanwezig moeten zijn om short-circuitevaluatie te laten werken.
Gecontroleerde operators
- CS9023: Operator kan niet worden gecontroleerd
- CS9024: Operator kan niet oncontroleerbaar worden gemaakt
- CS9025: Een gecontroleerde operator vereist dat er ook een overeenkomende ongecontroleerde versie gedeclareerd wordt
- CS9027: Onverwacht trefwoord 'uitgeschakeld'
De checked en unchecked trefwoorden kunnen alleen worden toegepast op specifieke operatordeclaraties. Zie Rekenkundige operatoren en door de gebruiker gedefinieerde operatoren voor de volledige regels.
- Verwijder het
checkedofuncheckedtrefwoord uit een niet-ondersteunde operator (CS9023, CS9024). Alleen de rekenkundige operatoren+, , ,-*,/++en--expliciete conversieoperators ondersteunen gecontroleerde en niet-gecontroleerde varianten. Andere operators, zoals vergelijkings- of gelijkheidsoperatoren, hebben geen uniek overloopgedrag en kunnen niet worden gemarkeerd of uitgeschakeld. - Voeg een overeenkomende niet-gecontroleerde versie van de operator (CS9025) toe. Een
checkedoperator biedt het overloopgedrag, maar de compiler heeft ook de bijbehorende niet-gecontroleerd versie nodig om te gebruiken inuncheckedcontexten en als de standaardinstelling wanneer geen van beide contexten is opgegeven. - Verwijder het
uncheckedtrefwoord uit de ongeldige positie (CS9027). Hetuncheckedtrefwoord in een operatordeclaratie is alleen geldig als onderdeel van de syntaxis van de operator (bijvoorbeeldpublic static explicit operator unchecked int(MyType t)). Als u deze ergens anders in de declaratie plaatst, treedt er een syntaxisfout op.
Interface- en erfenisvereisten
- CS9311: Type implementeert geen interfacelid. Het type kan lid niet implementeren omdat een van deze leden geen operator is
- CS9312: Type kan overgenomen lid niet overschrijven omdat een van deze leden geen operator is
- CS9313: De overbelaste samengestelde toewijzingsoperator accepteert één parameter
De compiler dwingt strikte overeenkomsten af tussen operatordeclaraties en de interfaceleden of basisklasseleden die ze implementeren of overschrijven. Zie Operator-overbelasting en interfaces voor de volledige regels.
- Wijzig het implementatielid in een operatordeclaratie die overeenkomt met het operatorlid van de interface of wijzig het interfacelid in een methode als het implementatielid een methode is (CS9311). Een operator kan alleen een interfacelid implementeren dat ook is gedeclareerd als operator. U kunt niet voldoen aan een operatorcontract met een reguliere methode of omgekeerd.
- Wijzig het overschrijvende lid in een operatordeclaratie die overeenkomt met het operatorlid van de basisklasse of wijzig het lid van de basisklasse in een methode als het afgeleide klasselid een methode is (CS9312). Net als bij interface-implementatie moet een override overeenkomen met het type lid dat wordt overschreven—een operator kan geen niet-operator lid overschrijven.
- Wijzig de declaratie van de samengestelde toewijzingsoperator om precies één parameter (CS9313) te accepteren. Samengestelde toewijzingsoperatoren zijn exemplaarleden waarbij de linkeroperand impliciet
thisis, dus alleen de rechteroperand wordt gedeclareerd als een parameter.
Gelijkheidsoperators
- CS0659: 'class' overschrijft Object.Equals(object o) maar overschrijft niet Object.GetHashCode()
- CS0660: Type definieert operator == of operator != maar overschrijft niet Object.Equals(object o)
- CS0661: Type definieert operator == of operator != maar overschrijft Object.GetHashCode() niet
De compiler vereist dat gelijkheidsgerelateerde onderdrukkingen en operatordefinities synchroon blijven. Wanneer u overschrijft Object.Equals of definieert operator == / operator !=, moet u ook de gerelateerde onderdrukkingen opgeven. Zie Hoe u gelijkheid van waarden definieert voor een type en gelijkheidsoperators voor de volledige regels.
- Voeg een onderdrukking toe van Object.GetHashCode wanneer u Object.Equals overschrijft (CS0659). Op hash gebaseerde verzamelingen zoals Dictionary<TKey,TValue> en HashSet<T> vertrouwen op het contract dat twee objecten die gelijk zijn, dezelfde hashcode moeten retourneren. Zonder een overeenkomende
GetHashCodeoverride kunnen objecten die als gelijk worden beschouwd, een hash geven aan verschillende buckets, waardoor zoekacties en ontdubbeling stilletjes mislukken. - Voeg een overschakeling toe van Object.Equals wanneer u
operator ==ofoperator !=definieert (CS0660). Code die rechtstreeks wordt aangeroepenEquals, inclusief veel framework-API's, LINQ-methoden en verzamelingsbewerkingen, maakt geen gebruik van uw aangepaste operator. Zonder een consistenteEqualsoverschrijving kunnen dezelfde twee objecten door==als gelijk worden beschouwd, maar niet doorEquals, wat leidt tot onvoorspelbaar gedrag. - Voeg een overschrijving van Object.GetHashCode toe wanneer u
operator ==ofoperator !=definieert (CS0661). Net als CS0659 moetGetHashCodeu consistent zijn in uw gelijkheidssemantiek. Alsoperator ==twee objecten als gelijk beschouwt, maar ze verschillende hash-codes retourneren, werken hash-gebaseerde collecties niet correct.
Overloop- en onderloopfouten
- CS0031: Constante waarde 'waarde' kan niet worden geconverteerd naar een 'type'
- CS0220: De bewerking veroorzaakt een overflow tijdens het compileren in de gecontroleerde modus
- CS0221: Constante waarde 'waarde' kan niet worden geconverteerd naar 'type' (gebruik de syntaxis 'unchecked' om te overschrijven)
- CS0463: Evaluatie van de decimale constante expressie is mislukt met fout: 'error'
- CS0543: 'opsomming': de opsommingswaarde is te groot om in het type te passen
- CS0594: Constante met drijvende komma valt buiten het bereik van het type 'type'
- CS0652: Vergelijking met integrale constante is nutteloos; de constante valt buiten het bereik van het type 'type'
- CS1021: Integrale constante is te groot
- CS8778: Constante waarde 'waarde' kan 'type' tijdens runtime overlopen (gebruik de syntaxis 'uitgeschakeld' om te overschrijven)
- CS8973: De bewerking kan tijdens de uitvoeringstijd overlopen (gebruik de 'unchecked' syntaxis om dit te negeren)
De compiler evalueert constante expressies tijdens het compileren en rapporteert fouten of waarschuwingen wanneer een waarde het geldige bereik van het doeltype overschrijdt. Zie gecontroleerde en niet-gecontroleerde instructies en integrale typen voor de volledige regels.
- Wijzig de constante waarde in een waarde die binnen het bereik van het doeltype past of wijzig het doel in een groter numeriek type (CS0031). De compiler kan een constante die niet past niet impliciet verkleinen. Bijvoorbeeld, het toewijzen van
256aan eenbyte(bereik 0-255) produceert deze fout. Als de afkapping opzettelijk is, gebruik een expliciete cast in eenuncheckedcontext. - Corrigeer de rekenkundige bewerking in de constante expressie, zodat het resultaat past bij het doeltype, of verpakt de expressie in een niet-gecontroleerd context om stille overloop toe te staan (CS0220). De compiler evalueert standaard de volledige constante expressie tijdens het compileren in een gecontroleerde context, dus tussenliggende of uiteindelijke resultaten die het bereik van het type overschrijden, veroorzaken deze fout.
- Wijzig de constante waarde of het doeltype, zodat de conversie geldig is of verpakt de expressie in een
uncheckedcontext als u opzettelijk het afgekapte resultaat (CS0221) wilt gebruiken. In tegenstelling tot CS0220 is deze fout van toepassing op expliciete constante conversies waarbij de bronwaarde niet past bij het doeltype. - Vereenvoudig of breek de
decimalconstante expressie uit, zodat deze binnen het bereik en de precisie van hetdecimaltype blijft (CS0463). Hetdecimaltype heeft een maximumwaarde van ongeveer $ 7,9 \times 10^{28}$ en 28-29 significante cijfers, en de compiler evalueert de volledige expressie tijdens het compileren. - Wijzig de waarde van het enum-lid in een waarde die past in het onderliggende type van de enum of wijzig het onderliggende type in een groter integraal type (CS0543). Standaard gebruiken opsommingen
intals het onderliggende type. Als de waarde van een lid het bereik van het onderliggende type overschrijdt, geeft u een groter type op, zoalslong. - Wijzig de drijvendekommageconstante in een waarde binnen het bereik van het doeltype of gebruik een type met een hogere precisie, zoals
doublein plaats vanfloat(CS0594). Hetfloattype ondersteunt waarden tot ongeveer $ 3,4 \times 10^{38}$, endoubleondersteunt maximaal $ 1,7 \times 10^{308}$. - Verwijder of corrigeer de vergelijking zodat de constante binnen het bereik van het type variabele (CS0652) valt. Het vergelijken van een
bytevariabele met300bijvoorbeeld kan nooit waar zijn, dus de compiler waarschuwt dat de vergelijking nutteloos is. Deze waarschuwing duidt vaak op een logische fout of een onjuiste overeenkomst tussen het variabeletype en het beoogde bereik van waarden. - Gebruik een groter numeriek type of splits de waarde over meerdere bewerkingen (CS1021). Deze fout treedt op wanneer een letterlijk geheel getal het bereik van zelfs het grootste integrale type overschrijdt (
ulongmaximaal $ 1,8 \times 10^{19}$). Overweeg het gebruik van BigIntegerwaarden voor waarden buiten dat bereik. - Verpakt de expressie in een
uncheckedcontext om de waarschuwing te onderdrukken of wijzig de waarde zodat deze binnen het bereik van het doeltype past (CS8778). Deze waarschuwing geeft een constante conversie aan die gegevens tijdens runtime kan verliezen. De compiler kan niet bewijzen dat de overloop zeker zal plaatsvinden, maar identificeert het risico. - Verpakt de expressie in een
uncheckedcontext om de waarschuwing te onderdrukken of herstructureer de rekenkundige bewerking om potentiële overloop (CS8973) te voorkomen. Deze waarschuwing is vergelijkbaar met CS8778 , maar is van toepassing op rekenkundige bewerkingen in plaats van conversies. De compiler detecteert dat de bewerking tijdens runtime kan overlopen.