Fouten en waarschuwingen met betrekking tot partial type- en partial liddeclaraties

U kunt de volgende fouten tegenkomen met betrekking tot partial type- en partial liddeclaraties:

  • CS0260: Ontbrekende gedeeltelijke wijziging bij declaratie van het type; een andere gedeeltelijke declaratie van dit type bestaat
  • CS0261: Gedeeltelijke declaraties van het type moeten alle klassen, alle structs of alle interfaces zijn
  • CS0262: Gedeeltelijke declaraties van het type hebben conflicterende toegankelijkheidsaanpassingen
  • CS0263: Gedeeltelijke declaraties van het type mogen geen verschillende basisklassen opgeven
  • CS0264: Gedeeltelijke declaraties van het type moeten dezelfde typeparameternamen in dezelfde volgorde hebben
  • CS0265: Gedeeltelijke declaraties van het type hebben inconsistente beperkingen voor de typeparameter 'typeparameter'
  • CS0282: Er is geen gedefinieerde volgorde tussen velden in meerdere declaraties van gedeeltelijke klasse of struct 'type'. Als u een volgorde wilt opgeven, moeten alle exemplaarvelden zich in dezelfde declaratie bevinden.
  • CS0501: 'lidfunctie' moet een hoofdtekst declareren omdat deze niet is gemarkeerd abstract, externof partial
  • CS0750: Een gedeeltelijk lid kan de wijzigingsfunctie 'abstract' niet hebben.
  • CS0751: Een gedeeltelijk lid moet worden gedeclareerd in een gedeeltelijk class of gedeeltelijk struct
  • CS0754: Een gedeeltelijk lid kan een interfacemethode niet expliciet implementeren.
  • CS0755: Beide gedeeltelijke methodedeclaraties moeten uitbreidingsmethoden zijn of geen van beide een uitbreidingsmethode.
  • CS0756: Een gedeeltelijke methode heeft mogelijk niet meerdere definiërende declaraties.
  • CS0757: Een gedeeltelijke methode heeft mogelijk niet meerdere uitvoeringsdeclaraties.
  • CS0759: Er is geen definitiedeclaratie gevonden voor de uitvoering van een gedeeltelijke methode.
  • CS0761: Declaraties van method<T> gedeeltelijke methoden hebben inconsistente typeparameterbeperkingen.
  • CS0762: Kan geen gedelegeerde maken op basis van de methode omdat het een gedeeltelijke methode is zonder een implementatiedeclaratie
  • CS0763: Beide gedeeltelijke methodedeclaraties moeten of static geen van beide zijn static.
  • CS0764: Beide gedeeltelijke methodedeclaraties moeten zijn unsafe of beide mogen niet zijn unsafe
  • CS1067: Gedeeltelijke declaraties moeten dezelfde typeparameternamen en variantieaanpassingen in dezelfde volgorde hebben.
  • CS8142: Beide gedeeltelijke liddeclaraties moeten dezelfde tuple-elementnamen gebruiken.
  • CS8663: Beide gedeeltelijke liddeclaraties moeten alleen-lezen zijn of geen van beide kunnen alleen-lezen zijn
  • CS8796: Gedeeltelijke methode moet toegankelijkheidsaanpassingen hebben omdat deze een niet-ongeldig retourtype heeft.
  • CS8795: Gedeeltelijk lid moet een implementatieonderdeel hebben omdat het toegankelijkheidsaanpassingen heeft.
  • CS8797: Gedeeltelijke methode moet toegankelijkheidsaanpassingen hebben omdat deze parameters 'out' bevat.
  • CS8798: Gedeeltelijke methode moet toegankelijkheidsaanpassingen hebben omdat deze een modifier 'virtual', 'override', 'sealed'new, '' of 'extern' heeft.
  • CS8799: Beide gedeeltelijke liddeclaraties moeten identieke toegankelijkheidsaanpassingen hebben.
  • CS8800: Beide gedeeltelijke liddeclaraties moeten identieke combinaties van virtual, overrideen sealednew modifiers hebben.
  • CS8817: Beide gedeeltelijke methodedeclaraties moeten hetzelfde retourtype hebben.
  • CS8818: Gedeeltelijke liddeclaraties moeten overeenkomende ref retourwaarden hebben.
  • CS8863: Slechts één gedeeltelijke typedeclaratie kan een lijst met parameters hebben
  • CS8988: De wijziging van de scoped parameter komt niet overeen met een gedeeltelijke definitie.
  • CS9248: Gedeeltelijke eigenschap moet een implementatieonderdeel hebben.
  • CS9249: Gedeeltelijke eigenschap moet een definitieonderdeel hebben.
  • CS9250: Een gedeeltelijke eigenschap heeft mogelijk niet meerdere definiërende declaraties en kan geen automatische eigenschap zijn.
  • CS9251: Een gedeeltelijke eigenschap heeft mogelijk niet meerdere uitvoeringsdeclaraties
  • CS9252: Eigenschapstoegangsfunctie moet worden geïmplementeerd omdat deze is gedeclareerd in het definitieonderdeel
  • CS9253: Eigenschapstoegangsfunctie implementeert geen toegangsbeheerprogramma dat is gedeclareerd in het definitieonderdeel
  • CS9254: Eigenschapstoegangsfunctie moet overeenkomen met het definitieonderdeel
  • CS9255: Beide gedeeltelijke eigenschapsdeclaraties moeten hetzelfde type hebben.
  • CS9256: Declaraties van gedeeltelijke eigenschappen hebben handtekeningverschillen.
  • CS9257: Beide gedeeltelijke eigenschapsdeclaraties moeten vereist zijn of geen van beide zijn vereist
  • CS9275: Gedeeltelijk lid moet een implementatieonderdeel hebben.
  • CS9276: Gedeeltelijk lid moet een definitieonderdeel hebben.
  • CS9277: Gedeeltelijk lid heeft mogelijk niet meerdere definiërende declaraties.
  • CS9278: Gedeeltelijk lid heeft mogelijk niet meerdere uitvoeringsdeclaraties.
  • CS9279: Gedeeltelijke gebeurtenis kan geen initialisatiefunctie hebben.
  • CS9280: Alleen de uitvoeringsdeclaratie van een gedeeltelijke constructor kan een initialisatiefunctie hebben.

In de volgende secties worden de oorzaak en oplossingen voor deze fouten en waarschuwingen uitgelegd.

Gedeeltelijke typen

  • CS0260: Ontbrekende gedeeltelijke wijziging bij declaratie van het type; een andere gedeeltelijke declaratie van dit type bestaat
  • CS0261: Gedeeltelijke declaraties van het type moeten alle klassen, alle structs of alle interfaces zijn
  • CS0262: Gedeeltelijke declaraties voor het type hebben conflicterende toegankelijkheidsmodificatoren
  • CS0263: Gedeeltelijke declaraties van het type mogen geen verschillende basisklassen opgeven
  • CS0264: Gedeeltelijke declaraties van het type moeten dezelfde typeparameternamen in dezelfde volgorde hebben
  • CS0265: Gedeeltelijke declaraties van het type hebben inconsistente beperkingen voor de typeparameter 'typeparameter'
  • CS0267: De modifier 'partial' kan alleen direct vóór 'class', 'record', 'struct', 'interface', of het retourtype van een methode of eigenschap verschijnen.
  • CS8863: Slechts één gedeeltelijke typedeclaratie kan een lijst met parameters hebben

Uw gedeeltelijke typedeclaratie kan ertoe leiden dat de compiler de volgende waarschuwing verzendt:

  • CS0282: Er is geen gedefinieerde volgorde tussen velden in meerdere declaraties van gedeeltelijk class of struct type. Als u een volgorde wilt opgeven, moeten alle exemplaarvelden zich in dezelfde declaratie bevinden.

Deze fouten treden op wanneer uw gedeeltelijke typedeclaraties de regels voor gedeeltelijke typen schenden.

  • Voeg de partial wijzigingsfunctie toe aan alle declaraties van het type, omdat nadat u een type over meerdere declaraties hebt gesplitst, elk onderdeel het trefwoord (CS0260) moet bevatten.
  • Zorg ervoor dat alle declaraties hetzelfde type trefwoord gebruiken, omdat menging class, struct, recorden interface in verschillende delen van hetzelfde type niet is toegestaan (CS0261). U moet zorgen voor consistente toegankelijkheidsaanpassingen voor alle declaraties, zoals het maken van alle onderdelen of alle onderdelen publicinternal, omdat conflicterende toegankelijkheid voor verschillende declaraties dubbelzinnigheid creëert over de beoogde zichtbaarheid van het type (CS0262).
  • Controleer of alle declaraties dezelfde basisklasse opgeven, omdat een type kan overnemen van slechts één basisklasse, zodat meerdere verschillende basisklassen conflicteren (CS0263).
  • Voor algemene gedeeltelijke typen moet u ervoor zorgen dat alle declaraties dezelfde typeparameters in dezelfde volgorde bevatten, omdat de namen van de typeparameters exact moeten overeenkomen met alle onderdelen (CS0264).
  • Controleer of beperkingen voor typeparameters consistent blijven voor alle declaraties, omdat inconsistente beperkingen dubbelzinnig zijn over welke typen kunnen worden gebruikt voor de typeparameters (CS0265).
  • Plaats het partial trefwoord direct vóór het type trefwoord (class, record, structof interface), omdat de taalsyntaxis deze specifieke volgorde vereist (CS0267).
  • Declareer een primaire constructor op slechts één gedeeltelijke declaratie, omdat meerdere primaire constructors conflicteren over welke constructorparameters en initialisatielogica moeten worden gebruikt (CS8863).

Wanneer u velden in meerdere bestanden declareert voor een gedeeltelijk structtype, moet u alle velddeclaraties samenvoegen in één bestand als de volgorde van de geheugenindeling van belang is, omdat de compiler geen specifieke volgorde kan garanderen wanneer velden worden gesplitst in meerdere bestanden (CS0282). Als de indelingsvolgorde niet van belang is, kunt u de System.Runtime.InteropServices.StructLayoutAttribute met de LayoutKind.Auto waarde toepassen zodat de Runtime de indeling automatisch kan optimaliseren.

Gedeeltelijke leden

  • CS0750: Een gedeeltelijk lid kan de wijzigingsfunctie 'abstract' niet hebben.
  • CS0751: Een gedeeltelijk lid moet worden gedeclareerd in een gedeeltelijk class of gedeeltelijk struct
  • CS0754: Een gedeeltelijk lid kan een interfacemethode niet expliciet implementeren.
  • CS0763: Beide gedeeltelijke methodedeclaraties moeten of static geen van beide zijn static.
  • CS0764: Beide gedeeltelijke methodedeclaraties moeten zijn unsafe of beide mogen niet zijn unsafe
  • CS8142: Beide gedeeltelijke liddeclaraties moeten dezelfde tuple-elementnamen gebruiken.
  • CS8663: Beide gedeeltelijke liddeclaraties moeten alleen-lezen zijn of geen van beide kunnen alleen-lezen zijn
  • CS8799: Beide gedeeltelijke liddeclaraties moeten identieke toegankelijkheidsaanpassingen hebben.
  • CS8800: Beide gedeeltelijke liddeclaraties moeten identieke combinaties van virtual, overrideen sealednew modifiers hebben.
  • CS8818: Gedeeltelijke liddeclaraties moeten overeenkomende ref retourwaarden hebben.
  • CS8988: De wijziging van de scoped parameter komt niet overeen met een gedeeltelijke definitie.
  • CS9275: Een gedeeltelijk lid moet een implementatiedeel bevatten.
  • CS9276: Gedeeltelijk lid moet een definitieonderdeel hebben.
  • CS9277: Gedeeltelijk lid heeft mogelijk niet meerdere definiërende declaraties.
  • CS9278: Gedeeltelijk lid heeft mogelijk niet meerdere uitvoeringsdeclaraties.

Deze fouten treden op wanneer uw gedeeltelijke liddeclaraties de regels voor gedeeltelijke methoden, eigenschappen, indexeerfuncties en gebeurtenissen schenden.

  • Verwijder de abstract wijzigingsfunctie van gedeeltelijke leden, omdat abstracte leden afgeleide klassen nodig hebben om implementaties te bieden. Deze vereiste is strijdig met het gedeeltelijke lidpatroon waarbij de implementatie wordt verstrekt in de uitvoeringsdeclaratie (CS0750).
  • Declareer gedeeltelijke leden binnen een type dat de partial wijzigingsfunctie bevat, omdat gedeeltelijke leden alleen kunnen bestaan in gedeeltelijke typen (CS0751).
  • Verwijder expliciete interface-implementaties van gedeeltelijke leden, omdat het tweedelige declaratiepatroon niet compatibel is met de syntaxis van expliciete interface-implementatie (CS0754).
  • Neem de static wijzigingsfunctie consistent op in beide declaraties of laat deze weg, omdat het mengen van statische en instantieleden dubbelzinnigheid zou creëren over hoe het lid wordt aangeroepen (CS0763).
  • Neem de unsafe wijzigingsfunctie consistent op in beide declaraties of laat deze weg, omdat inconsistente onveilige contexten veiligheidsproblemen of compilatiefouten (CS0764) kunnen veroorzaken.
  • Gebruik identieke tuple-elementnamen in beide declaraties, omdat verschillende namen verwarring veroorzaken over welke namen beschikbaar zijn bij het gebruik van de code (CS8142).
  • Neem de readonly modifier consistent op in beide declaraties of laat deze weg, omdat het combineren van alleen-lezen en niet-alleen-lezen declaraties voor onduidelijkheid zorgt over of het lid de toestand van de instantie kan wijzigen (CS8663).
  • Gebruik identieke toegankelijkheidsaanpassingen (zoals public, private, protectedof internal) in beide declaraties, omdat verschillende toegankelijkheidsniveaus conflicteren over de zichtbaarheid van het lid (CS8799).
  • Pas dezelfde combinatie van virtual, override, sealed en new modificeerders toe op beide declaraties, omdat deze modificeerders nodig zijn om gedrag in overerving en polymorfisme consistent te houden (CS8800).
  • Gebruik overeenkomende ref retourmodifiers in beide declaraties, omdat inconsistent gedrag bij het retourneren door referentie typeveiligheidsproblemen (CS8818) zou veroorzaken.
  • Pas de scoped modifier consistent toe op parameters in beide declaraties, omdat deze modifier de levensduur van ref-parameters regelt en moet overeenkomen om de geheugenveiligheid (CS8988) te garanderen.
  • Geef een uitvoeringsdeclaratie op voor elk gedeeltelijk lid dat een definiërende verklaring heeft, omdat voor gedeeltelijke leden beide onderdelen moeten worden voltooid (CS9275, CS9276).
  • Zorg ervoor dat elk gedeeltelijk lid precies één definitiedeclaratie en één implementatiedeclaratie heeft, omdat meerdere declaraties dubbelzinnigheid creëren over welke definitie of implementatie moet worden gebruikt (CS9277, CS9278).

Gedeeltelijke methoden

  • CS0501: 'lidfunctie' moet een hoofdtekst declareren omdat deze niet is gemarkeerd abstract, externof partial
  • CS0755: Beide gedeeltelijke methodedeclaraties moeten uitbreidingsmethoden zijn of geen van beide een uitbreidingsmethode.
  • CS0756: Een gedeeltelijke methode heeft mogelijk niet meerdere definiërende declaraties.
  • CS0757: Een gedeeltelijke methode heeft mogelijk niet meerdere uitvoeringsdeclaraties.
  • CS0759: Er is geen definitiedeclaratie gevonden voor de uitvoering van een gedeeltelijke methode.
  • CS0761: Declaraties van method<T> gedeeltelijke methoden hebben inconsistente typeparameterbeperkingen.
  • CS0762: Kan geen gedelegeerde maken op basis van de methode omdat het een gedeeltelijke methode is zonder een implementatiedeclaratie
  • CS1067: Gedeeltelijke declaraties moeten dezelfde typeparameternamen en variantieaanpassingen in dezelfde volgorde hebben.
  • CS8796: Gedeeltelijke methode moet toegankelijkheidsaanpassingen hebben omdat deze een niet-ongeldig retourtype heeft.
  • CS8795: Gedeeltelijk lid moet een implementatieonderdeel hebben omdat het toegankelijkheidsaanpassingen heeft.
  • CS8797: Gedeeltelijke methode moet toegankelijkheidsaanpassingen hebben omdat deze parameters 'out' bevat.
  • CS8798: Gedeeltelijke methode moet toegankelijkheidsaanpassingen hebben omdat deze een modifier 'virtual', 'override', 'sealed'new, '' of 'extern' heeft.
  • CS8817: Beide gedeeltelijke methodedeclaraties moeten hetzelfde retourtype hebben.

Deze fouten treden op wanneer uw gedeeltelijke methodedeclaraties de regels voor gedeeltelijke methoden schenden.

  • Voeg de partial wijzigingsfunctie toe aan de methodedeclaratie of geef een methodetekst op, omdat methoden zonder implementaties moeten worden gemarkeerd als abstract, externof partial (CS0501).
  • Zorg ervoor dat beide declaraties de syntaxis van de extensiemethode (this modifier op de eerste parameter) consistent bevatten of weglaten, omdat het mengen van uitbreidings- en niet-extensiedeclaraties incompatibele methodehandtekeningen (CS0755) maakt.
  • Verwijder dubbele definiërende declaraties (de declaraties zonder methode-lichamen), omdat elke gedeeltelijke methode slechts één definitie (CS0756) kan hebben.
  • Verwijder dubbele implementatiedeclaraties (de declaraties met methode-instanties), omdat elke gedeeltelijke methode slechts één implementatie kan hebben (CS0757).
  • Voeg een bijbehorende definitiedeclaratie toe voor elke uitvoeringsdeclaratie, omdat elke gedeeltelijke methode met een hoofdtekst een overeenkomende handtekeningdeclaratie moet hebben zonder een hoofdtekst (CS0759).
  • Zorg ervoor dat typeparameterbeperkingen overeenkomen met beide declaraties, omdat inconsistente beperkingen dubbelzinnigheid creëren over welke typen geldig zijn voor de algemene methode (CS0761).
  • Geef een implementatiedeclaratie op voordat u een gemachtigde maakt op basis van de methode, omdat gemachtigden een concrete methode-implementatie vereisen om te verwijzen (CS0762).
  • Voor algemene gedeeltelijke methoden moet u ervoor zorgen dat beide declaraties dezelfde parameternamen en variantieaanpassingen in dezelfde volgorde gebruiken, omdat niet-overeenkomende algemene handtekeningen incompatibele methodedeclaraties (CS1067) maken.
  • Voeg expliciete toegankelijkheidsmodificeerders (zoals public, private, protected of internal) toe wanneer de methode een type anders dan void retourneert, omdat niet-void gedeeltelijke methoden gedefinieerde toegankelijkheid moeten hebben om aangeroepen te kunnen worden vanuit andere code (CS8796).
  • Geef een implementatiedeclaratie op wanneer toegankelijkheidsaanpassingen zijn opgegeven, omdat toegankelijke gedeeltelijke methoden moeten worden aangeroepen (CS8795).
  • Voeg expliciete toegankelijkheidsmodificatoren toe wanneer de methode out-parameters bevat, omdat methoden met out-parameters gedefinieerde beschikbaarheid moeten hebben om aanroepbaar te zijn (CS8797).
  • Voeg expliciete toegankelijkheidsaanpassingen toe bij het gebruik van virtual, override, , sealedof newextern modifiers, omdat deze modifiers van invloed zijn op de zichtbaarheid van methoden en expliciete toegankelijkheidsspecificaties vereisen (CS8798).
  • Zorg ervoor dat beide declaraties hetzelfde retourtype opgeven, omdat verschillende retourtypen incompatibele methodehandtekeningen (CS8817) maken.

Gedeeltelijke eigenschappen

  • CS9248: Gedeeltelijke eigenschap moet een implementatieonderdeel hebben.
  • CS9249: Gedeeltelijke eigenschap moet een definitieonderdeel hebben.
  • CS9250: Een gedeeltelijke eigenschap heeft mogelijk niet meerdere definiërende declaraties en kan geen automatische eigenschap zijn.
  • CS9251: Een gedeeltelijke eigenschap heeft mogelijk niet meerdere uitvoeringsdeclaraties
  • CS9252: Eigenschapstoegangsfunctie moet worden geïmplementeerd omdat deze is gedeclareerd in het definitieonderdeel
  • CS9253: Eigenschapstoegangsfunctie implementeert geen toegangsbeheerprogramma dat is gedeclareerd in het definitieonderdeel
  • CS9254: Eigenschapstoegangsfunctie moet overeenkomen met het definitieonderdeel
  • CS9255: Beide gedeeltelijke eigenschapsdeclaraties moeten hetzelfde type hebben.
  • CS9257: Beide gedeeltelijke eigenschapsdeclaraties moeten vereist zijn of geen van beide zijn vereist

De declaratie van uw gedeeltelijke eigenschap of indexeerfunctie kan ertoe leiden dat de compiler de volgende waarschuwing verzendt:

  • CS9256: Declaraties van gedeeltelijke eigenschappen hebben handtekeningverschillen.

Deze fouten en waarschuwingen treden op wanneer de declaraties van uw gedeeltelijke eigenschap of indexeerfunctie de regels voor gedeeltelijke eigenschappen schenden.

  • Geef een implementatiedeclaratie op voor elke gedeeltelijke eigenschap die declaratie definieert, omdat voor gedeeltelijke eigenschappen beide onderdelen moeten worden voltooid (CS9248).
  • Geef een definiërende declaratie op voor elke gedeeltelijke declaratie voor de uitvoering van eigenschappen, omdat elke implementatie een bijbehorende definitie (CS9249) moet hebben.
  • Verwijder dubbele definiërende declaraties en vermijd het gebruik van syntaxis van automatische eigenschappen in de implementatiedeclaratie, omdat elke gedeeltelijke eigenschap slechts één definitie kan hebben en de implementatie expliciete toegangsorganen (CS9250) moet bevatten.
  • Verwijder dubbele implementatiedeclaraties, omdat elke gedeeltelijke eigenschap slechts één implementatie kan hebben (CS9251).
  • Implementeer alle accessors die zijn gedeclareerd in de definiërende declaratie, omdat de implementatiedeclaratie lichamen moet bieden voor elke accessor (get, set of init) die is opgegeven in de definitie (CS9252).
  • Verwijder accessors uit de implementatiedeclaratie die niet zijn gedeclareerd in de definiërende declaratie, omdat u alleen accessors kunt implementeren die zijn gedeclareerd in het definitieonderdeel (CS9253).
  • Zorg ervoor dat accessorhandtekeningen overeenkomen tussen beide declaraties, inclusief het toegangstype (ophalen, instellen of init) en eventuele wijzigingsaanpassingen, omdat inconsistente accessordefinities incompatibele eigenschapsdeclaraties (CS9254) maken.
  • Zorg ervoor dat beide declaraties hetzelfde eigenschapstype opgeven, omdat verschillende typen incompatibele eigenschapshandtekeningen (CS9255) maken.
  • Zorg ervoor dat beide declaraties de required wijziging consistent bevatten of weglaten, omdat het mengen van vereiste en niet-vereiste declaraties dubbelzinnigheid creëert over het feit of de eigenschap moet worden geïnitialiseerd (CS9257).
  • Controleer en corrigeer eventuele niet-overeenkomende handtekeningen tussen de declaraties en de implementatie van declaraties, omdat verschillen in toegankelijkheidsaanpassingen, retourtypen of parameterlijsten (voor indexeerfuncties) onverwacht gedrag (CS9256) kunnen veroorzaken.

Gedeeltelijke gebeurtenissen en constructors

  • CS9279: Gedeeltelijke gebeurtenis kan geen initialisatiefunctie hebben.
  • CS9280: Alleen de uitvoeringsdeclaratie van een gedeeltelijke constructor kan een initialisatiefunctie hebben.

U hebt een initialisatiefunctie gedeclareerd voor de definiërende declaratie van een gedeeltelijke constructor of voor een gedeeltelijke gebeurtenisdeclaratie. Verwijder de initialisatiefunctie.