Chyby a upozornění související s partial deklaracemi typů a partial členů

Můžete narazit na následující chyby související s partial deklaracemi typu a partial člena:

  • CS0260: Chybí částečný modifikátor deklarace typu; existuje další částečná deklarace tohoto typu.
  • CS0261: Částečné deklarace typu musí být všechny třídy, všechny struktury nebo všechna rozhraní
  • CS0262: Částečné deklarace typu mají konfliktní modifikátory přístupnosti
  • CS0263: Částečné deklarace typu nesmí určovat různé základní třídy
  • CS0264: Částečné deklarace typu musí mít stejné názvy parametrů typu ve stejném pořadí.
  • CS0265: Částečné deklarace typu mají nekonzistentní omezení pro parametr type 'type parameter'
  • CS0267: Modifikátor 'partial' se může objevit pouze bezprostředně před 'class', 'record', 'struct', 'interface' nebo metodou nebo návratovým typem vlastnosti.
  • CS0282: Není definováno řazení mezi poli v několika deklarací částečné třídy nebo struktury 'type'. Chcete-li zadat řazení, musí být všechna pole instance ve stejné deklaraci.
  • CS0501: Členová funkce musí deklarovat tělo, protože není označeno abstract, externnebo partial
  • CS0750: Částečný člen nemůže mít modifikátor 'abstract'.
  • CS0751: Částečný člen musí být deklarován v částečném class nebo částečném struct
  • CS0754: Částečný člen nemusí explicitně implementovat metodu rozhraní.
  • CS0755: Obě částečné deklarace metody musí být rozšiřující metody, nebo ani jedna z nich nemůže být rozšiřující metoda.
  • CS0756: Částečná metoda nemusí mít více definic deklarací.
  • CS0757: Částečná metoda nemusí mít více implementací deklarací.
  • CS0759: Nebyla nalezena žádná definice deklarace pro implementaci deklarace částečné metody.
  • CS0761: Částečné deklarace method<T> metody mají nekonzistentní omezení parametrů typu.
  • CS0762: Nelze vytvořit delegáta z metody, protože se jedná o částečnou metodu bez implementace deklarace
  • CS0763: Obě deklarace částečné metody musí být static nebo nesmí být static.
  • CS0764: Obě deklarace částečné metody musí být unsafe nebo nesmí být unsafe
  • CS1067: Částečné deklarace musí mít stejné názvy parametrů typu a modifikátory rozptylu ve stejném pořadí.
  • CS8142: Obě částečné deklarace členů musí používat stejné názvy elementů řazené kolekce členů.
  • CS8663: Obě deklarace částečného členu musí být jen pro čtení, nebo nesmí být jen pro čtení.
  • CS8796: Částečná metoda musí mít modifikátory přístupnosti, protože má nevoid návratový typ.
  • CS8795: Částečný člen musí mít část implementace, protože má modifikátory přístupnosti.
  • CS8797: Částečná metoda musí mít modifikátory přístupnosti, protože má parametry 'out'.
  • CS8798: Částečná metoda musí mít modifikátory přístupnosti, protože má modifikátor 'virtual', 'override', 'sealed'new nebo 'extern' modifikátor.
  • CS8799: Obě částečné deklarace členů musí mít stejné modifikátory přístupnosti.
  • CS8800: Obě částečné deklarace členů musí mít identické kombinace virtual, override, sealeda new modifikátory.
  • CS8817: Obě deklarace částečné metody musí mít stejný návratový typ.
  • CS8818: Částečné deklarace členů musí mít odpovídající ref návratové hodnoty.
  • CS8863: Seznam parametrů může obsahovat pouze jednu deklaraci částečného typu.
  • CS8988: scoped Modifikátor parametru neodpovídá částečné definici.
  • CS9248: Částečná vlastnost musí mít část implementace.
  • CS9249: Částečná vlastnost musí mít část definice.
  • CS9250: Částečná vlastnost nemusí mít více definujících deklarací a nemůže být automatickou vlastností.
  • CS9251: Částečná vlastnost nemusí mít více implementací deklarací
  • CS9252: Je nutné implementovat přístupové objekty vlastností, protože je deklarován v části definice.
  • CS9253: Přístupové objekty vlastností neimplementují žádné přístupové objekty deklarované v části definice
  • CS9254: Přístupové objekty vlastností musí odpovídat části definice
  • CS9255: Obě částečné deklarace vlastností musí mít stejný typ.
  • CS9256: Částečné deklarace vlastností mají rozdíly mezi podpisy.
  • CS9257: Musí být požadovány obě částečné deklarace vlastností nebo nemusí být požadovány.
  • CS9275: Částečný člen musí mít implementační část.
  • CS9276: Částečný člen musí mít část definice.
  • CS9277: Částečný člen nemusí mít více definujících deklarací.
  • CS9278: Částečný člen nesmí mít více implementujících deklarací.
  • CS9279: Částečná událost nemůže mít inicializátor.
  • CS9280: Inicializátor může mít pouze implementační deklarace částečného konstruktoru.

Následující části popisují příčinu a opravy těchto chyb a upozornění.

Částečné typy

  • CS0260: Chybí částečný modifikátor deklarace typu; existuje další částečná deklarace tohoto typu.
  • CS0261: Částečné deklarace typu musí být všechny třídy, všechny struktury nebo všechna rozhraní
  • CS0262: Částečné deklarace typu mají konfliktní modifikátory přístupnosti
  • CS0263: Částečné deklarace typu nesmí určovat různé základní třídy
  • CS0264: Částečné deklarace typu musí mít stejné názvy parametrů typu ve stejném pořadí.
  • CS0265: Částečné deklarace typu mají nekonzistentní omezení pro parametr type 'type parameter'
  • CS0267: Modifikátor 'partial' se může objevit pouze bezprostředně před 'class', 'record', 'struct', 'interface' nebo metodou nebo návratovým typem vlastnosti.
  • CS8863: Seznam parametrů může obsahovat pouze jednu deklaraci částečného typu.

Deklarace částečného typu může způsobit, že kompilátor vygeneruje následující upozornění:

  • CS0282: Není definováno řazení mezi poli v několika deklarací částečné class nebo struct "typu". Chcete-li zadat řazení, musí být všechna pole instance ve stejné deklaraci.

K těmto chybám dochází, když deklarace částečného typu porušují pravidla pro částečné typy.

  • partial Přidejte modifikátor do všech deklarací typu, protože po rozdělení typu mezi více deklarací musí každá část obsahovat klíčové slovo (CS0260).
  • Zajistěte, aby všechny deklarace používaly stejné klíčové slovo typu, protože kombinace class, struct, recorda interface v různých částech stejného typu není povolena (CS0261). Měli byste zajistit konzistentní modifikátory přístupu napříč všemi deklaracemi, jako je vytváření všech částí public nebo všech částí internal, protože konfliktní přístupnost u různých deklarací vytváří nejednoznačnost ohledně zamýšlené viditelnosti typu (CS0262).
  • Ověřte, že všechny deklarace určují stejnou základní třídu, protože typ může dědit pouze z jedné základní třídy, takže došlo ke konfliktu více různých základních tříd (CS0263).
  • U obecných částečných typů zajistěte, aby všechny deklarace vypisovaly stejné parametry typu ve stejném pořadí, protože názvy parametrů typu se musí přesně shodovat se všemi částmi (CS0264).
  • Ověřte, že omezení parametrů typu zůstávají konzistentní napříč všemi deklaracemi, protože nekonzistentní omezení by vytvořila nejednoznačnost ohledně typů, které lze použít pro parametry typu (CS0265).
  • partial Klíčové slovo umístěte bezprostředně před klíčové slovo typu (class, record, structnebointerface), protože syntaxe jazyka vyžaduje toto konkrétní řazení (CS0267).
  • Deklarujte primární konstruktor pouze u jedné částečné deklarace, protože více primárních konstruktorů by kolidovalo s tím, jaké parametry konstruktoru a logiku inicializace se mají použít (CS8863).

Když deklarujete pole ve více souborech pro částečný typ struktury, měli byste všechny deklarace polí sloučit do jednoho souboru, pokud záleží na pořadí rozložení paměti, protože kompilátor nemůže zaručit konkrétní řazení při rozdělení polí mezi více souborů (CS0282). Alternativně, pokud na pořadí rozložení nezáleží, můžete použít System.Runtime.InteropServices.StructLayoutAttribute s hodnotou LayoutKind.Auto, což běhovému prostředí umožní automaticky optimalizovat rozložení.

Částečné členy

  • CS0750: Částečný člen nemůže mít modifikátor 'abstract'.
  • CS0751: Částečný člen musí být deklarován v částečném class nebo částečném struct
  • CS0754: Částečný člen nemusí explicitně implementovat metodu rozhraní.
  • CS0763: Obě deklarace částečné metody musí být static nebo nesmí být static.
  • CS0764: Obě deklarace částečné metody musí být unsafe nebo nesmí být unsafe
  • CS8142: Obě částečné deklarace členů musí používat stejné názvy elementů řazené kolekce členů.
  • CS8663: Obě deklarace částečného členu musí být jen pro čtení, nebo nesmí být jen pro čtení.
  • CS8799: Obě částečné deklarace členů musí mít stejné modifikátory přístupnosti.
  • CS8800: Obě částečné deklarace členů musí mít identické kombinace virtual, override, sealeda new modifikátory.
  • CS8818: Částečné deklarace členů musí mít odpovídající ref návratové hodnoty.
  • CS8988: scoped Modifikátor parametru neodpovídá částečné definici.
  • CS9275: Částečný člen musí mít část implementace.
  • CS9276: Částečný člen musí mít část definice.
  • CS9277: Částečný člen nemusí mít více definujících deklarací.
  • CS9278: Částečný člen nesmí mít více implementačních deklarací.

K těmto chybám dochází, když deklarace částečného členu porušují pravidla pro částečné metody, vlastnosti, indexery a události.

  • Odeberte abstract modifikátor z částečných členů, protože abstraktní členy vyžadují, aby odvozené třídy poskytly implementace. Tento požadavek je v konfliktu se schématem částečného členu, kde je implementace poskytnuta v deklaraci implementace (CS0750).
  • Deklarujte částečné členy v rámci typu, který obsahuje partial modifikátor, protože částečné členy mohou existovat pouze v částečných typech (CS0751).
  • Odeberte explicitní implementace rozhraní z částečných členů, protože vzor dvoudílné deklarace není kompatibilní s explicitní syntaxí implementace rozhraní (CS0754).
  • Zahrnout nebo vynechat static modifikátor konzistentně v obou deklarací, protože kombinování statických členů a členů instance by vytvořilo nejednoznačnost ohledně toho, jak je člen vyvolán (CS0763).
  • Zahrnout nebo vynechat unsafe modifikátor konzistentně v obou deklarací, protože nekonzistentní nebezpečné kontexty by mohly způsobit bezpečnostní problémy nebo chyby kompilace (CS0764).
  • V obou deklaracích používejte identické názvy prvků n-tice, protože různé názvy by způsobovaly zmatek o tom, které názvy jsou dostupné při použití kódu (CS8142).
  • Zahrnout nebo vynechat modifikátor readonly konzistentně v obou deklaracích, protože kombinace deklarací pouze pro čtení a těch, které nejsou pouze pro čtení, vytváří nejednoznačnost ohledně toho, zda člen může změnit stav instance (CS8663).
  • U obou deklarací použijte identické modifikátory přístupnosti (například public, private, protectednebo internal), protože různé úrovně přístupnosti by kolidovaly s viditelností člena (CS8799).
  • Použití stejné kombinace virtual, , overridesealeda new modifikátorů na obě deklarace, protože tyto modifikátory řídí dědičnost a polymorfismus chování, které musí být konzistentní (CS8800).
  • V obou deklaracích použijte odpovídající ref modifikátory návratu, protože nekonzistentní chování referenčního návratu by způsobilo problémy s bezpečností typů (CS8818).
  • scoped Modifikátor se konzistentně použije na parametry v obou deklaracích, protože tento modifikátor řídí životnost parametrů ref a musí se shodovat s zajištěním bezpečnosti paměti (CS8988).
  • Zadejte implementující deklaraci pro každého částečného člena, který má definující deklaraci, protože částečné členy vyžadují dokončení obou částí (CS9275, CS9276).
  • Ujistěte se, že každý částečný člen má přesně jednu definující deklaraci a jednu implementující deklaraci, protože více deklarací by vytvořilo nejednoznačnost ohledně toho, jakou definici nebo implementaci použít (CS9277, CS9278).

Částečné metody

  • CS0501: Členová funkce musí deklarovat tělo, protože není označeno abstract, externnebo partial
  • CS0755: Obě částečné deklarace metody musí být rozšiřující metody, nebo ani jedna z nich nemůže být rozšiřující metoda.
  • CS0756: Částečná metoda nemusí mít více definic deklarací.
  • CS0757: Částečná metoda nemusí mít více implementací deklarací.
  • CS0759: Nebyla nalezena žádná definice deklarace pro implementaci deklarace částečné metody.
  • CS0761: Částečné deklarace method<T> metody mají nekonzistentní omezení parametrů typu.
  • CS0762: Nelze vytvořit delegáta z metody, protože se jedná o částečnou metodu bez implementace deklarace
  • CS1067: Částečné deklarace musí mít stejné názvy parametrů typu a modifikátory rozptylu ve stejném pořadí.
  • CS8796: Částečná metoda musí mít modifikátory přístupnosti, protože má nevoid návratový typ.
  • CS8795: Částečný člen musí mít část implementace, protože má modifikátory přístupnosti.
  • CS8797: Částečná metoda musí mít modifikátory přístupnosti, protože má parametry 'out'.
  • CS8798: Částečná metoda musí mít modifikátory přístupnosti, protože má modifikátor 'virtual', 'override', 'sealed'new nebo 'extern' modifikátor.
  • CS8817: Obě deklarace částečné metody musí mít stejný návratový typ.

K těmto chybám dochází, když deklarace částečné metody porušují pravidla pro částečné metody.

  • partial Přidejte modifikátor do deklarace metody nebo zadejte tělo metody, protože metody bez implementací musí být označeny jako abstract, externnebo partial (CS0501).
  • Zajistěte, aby obě prohlášení zahrnovala nebo vynechala syntaxi metody rozšíření (this modifikátor u prvního parametru) konzistentně, protože kombinace syntaxe rozšíření a prohlášení bez syntaxe rozšíření vytváří nekompatibilní podpisy metod (CS0755).
  • Odeberte duplicitní definující deklarace (deklarace bez těla metody), protože každá částečná metoda může mít pouze jednu definici (CS0756).
  • Odeberte opakující se deklarace implementací (deklarace obsahující těla metod), protože každá částečná metoda může mít pouze jednu implementaci (CS0757).
  • Přidejte odpovídající definující deklaraci pro každou implementující deklaraci, protože každá částečná metoda s tělem musí mít odpovídající deklaraci podpisu bez těla (CS0759).
  • Zajistěte shodu omezení parametru typu v obou deklaracích, protože nekonzistentní omezení vytvářejí nejednoznačnost ohledně toho, které typy jsou platné pro obecnou metodu (CS0761).
  • Před vytvořením delegáta z metody zadejte implementační deklaraci, protože delegáti vyžadují konkrétní implementaci metody pro referenci (CS0762).
  • U obecných částečných metod zajistěte, aby obě deklarace používaly stejné názvy parametrů typu a modifikátory rozptylu ve stejném pořadí, protože neshodované obecné podpisy vytvářejí nekompatibilní deklarace metody (CS1067).
  • Přidejte explicitní modifikátory přístupnosti (například public, private, protectednebo internal), pokud metoda vrátí jinývoid typ, protože částečné metody bez void musí mít definovanou přístupnost, aby bylo možné volat z jiného kódu (CS8796).
  • Zadejte implementační deklaraci při zadání modifikátorů přístupnosti, protože přístupné částečné metody musí mít implementace, které se mají vyvolat (CS8795).
  • Pokud má metoda out parametry, přidejte explicitní modifikátory přístupnosti, protože metody s parametry out musí mít definovanou přístupnost, aby bylo možné volat (CS8797).
  • Přidejte explicitní modifikátory přístupnosti při použití virtual, , overridesealed, new, nebo extern modifikátorů, protože tyto modifikátory ovlivňují viditelnost metody a vyžadují explicitní specifikaci přístupnosti (CS8798).
  • Zajistěte, aby obě deklarace zadaly stejný návratový typ, protože různé návratové typy vytvářejí nekompatibilní podpisy metod (CS8817).

Částečné vlastnosti

  • CS9248: Částečná vlastnost musí mít část implementace.
  • CS9249: Částečná vlastnost musí mít část definice.
  • CS9250: Částečná vlastnost nemusí mít více definujících deklarací a nemůže být automatickou vlastností.
  • CS9251: Částečná vlastnost nemusí mít více implementací deklarací
  • CS9252: Je nutné implementovat přístupové objekty vlastností, protože je deklarován v části definice.
  • CS9253: Přístupové objekty vlastností neimplementují žádné přístupové objekty deklarované v části definice
  • CS9254: Přístupové objekty vlastností musí odpovídat části definice
  • CS9255: Obě částečné deklarace vlastností musí mít stejný typ.
  • CS9257: Musí být požadovány obě částečné deklarace vlastností nebo nemusí být požadovány.

Částečná deklarace vlastnosti nebo indexeru může způsobit, že kompilátor vygeneruje následující upozornění:

  • CS9256: Částečné deklarace vlastností mají rozdíly mezi podpisy.

K těmto chybám a upozorněním dochází v případě, že deklarace částečné vlastnosti nebo indexeru porušují pravidla pro částečné vlastnosti.

  • Zadejte implementující deklaraci pro každou částečnou deklaraci definující deklaraci, protože částečné vlastnosti vyžadují dokončení obou částí (CS9248).
  • Zadejte definici deklarace pro každou částečnou implementaci deklarace vlastnosti, protože každá implementace musí mít odpovídající definici (CS9249).
  • Odeberte duplicitní deklarace definicí a vyhněte se použití syntaxe automatické vlastnosti v deklaraci implementace, protože každá částečná vlastnost může mít pouze jednu definici a implementace musí obsahovat explicitní těla přistupových metod (CS9250).
  • Odeberte duplicitní implementační deklarace, protože každá částečná vlastnost může mít pouze jednu implementaci (CS9251).
  • Implementujte všechny přístupové objekty deklarované v definici deklarace, protože prováděcí deklarace musí poskytovat těla pro každý přístupový objekt (get, set nebo init) zadaný v definici (CS9252).
  • Odeberte přístupové objekty z implementující deklarace, která nebyla deklarována v definující deklaraci, protože lze implementovat pouze přístupové objekty deklarované v definiční části (CS9253).
  • Zajistěte shodu podpisů přístupového objektu mezi oběma deklaracemi, včetně typu přístupového objektu (get, set nebo init) a jakýchkoli modifikátorů, protože nekonzistentní definice přístupového objektu vytvářejí nekompatibilní deklarace vlastností (CS9254).
  • Zajistěte, aby obě deklarace zadaly stejný typ vlastnosti, protože různé typy vytvářejí nekompatibilní podpisy vlastností (CS9255).
  • Zajistěte, aby obě deklarace obsahovaly modifikátor konzistentně nebo required vynechaly, protože kombinace požadovaných a nepožadovaných deklarací vytváří nejednoznačnost týkající se toho, zda se vlastnost musí inicializovat (CS9257).
  • Zkontrolujte a opravte všechny neshody podpisů mezi deklarací a implementací deklarací, protože rozdíly v modifikátorech přístupnosti, návratových typech nebo seznamech parametrů (pro indexery) můžou způsobit neočekávané chování (CS9256).

Částečné události a konstruktory

  • CS9279: Částečná událost nemůže mít inicializátor.
  • CS9280: Inicializátor může mít pouze implementační deklarace částečného konstruktoru.

Deklarovali jste inicializátor pro definování deklarace částečného konstruktoru nebo částečné deklarace události. Odeberte inicializátor.