Sdílet prostřednictvím


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

Existuje mnoho chyb souvisejících 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.

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.

U každého částečného partial typu musí klíčové slovo bezprostředně předcházet class, record, , structnebo interface. Kompilátor vygeneruje chybu, pokud se zobrazí v jiném pořadí. Kromě toho:

  • Všechny deklarace částečného typu se musí shodovat s ohledem na typ (class, struct, record class, record struct, readonly struct, nebo readonly record struct).
  • Všechny deklarace musí obsahovat partial modifikátor.
  • Deklarace obecného částečného typu musí obsahovat stejné parametry typu ve stejném pořadí.

Některé části deklarace nejsou nutné opakovat u všech deklarací typu. Pokud se však tyto prvky opakují u více partial deklarací, musí se shodovat:

  • Všechny modifikátory přístupu, například public.
  • Jakákoli základní třída nebo implementovaná rozhraní.
  • Všechna omezení parametrů typu.

Primární konstruktor lze deklarovat na maximálně jedné deklaraci částečného typu.

Kompilátor vás upozorní, pokud máte více polí deklarovaných v několika souborech pro určitý partial struct typ. Pokud je pořadí rozložení důležité, musíte deklarovat všechna pole ve stejném souboru. Pokud na objednávce nezáleží, můžete ji použít System.Runtime.InteropServices.StructLayoutAttribute s LayoutKind.Auto hodnotou.

Čá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.

Částečné členy mají dvě deklarace. Deklarace bez implementace je deklarující deklarace. Deklarace s implementací je prováděcí deklarace. Částečné členy jsou povoleny pouze v partial typu. Částečné členy nemohou být abstract. Částečné členy nemohou explicitně implementovat rozhraní. Obě deklarace částečného členu musí mít identické podpisy. Například obě nebo ani jedna deklarace mohou obsahovat static nebo unsafe modifikátory.

Čá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.

Některé partial deklarace metody nevyžadují implementaci deklarace. To znamená, že pokud člen vrátí void, deklaruje žádné modifikátory přístupu (včetně výchozího private modifikátoru) a nezahrnuje žádný z virtual, , overridenebo sealednew modifikátorů. V opačném případě musí jakákoli částečná metoda obsahovat deklarování i implementaci deklarací i implementující deklarace.

Pokud částečná metoda obsahuje implementickou deklaraci, musí být obě deklarace identické. Definovat lze přesně jednu implementaci deklarace.

Částečné vlastnosti

Následující chyby označují chyby v deklaraci částečné vlastnosti nebo indexeru:

  • 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.

Následující upozornění označuje rozdíl podpisu v deklarování a implementaci deklarací a implementací deklarací v částečné vlastnosti:

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

Částečná vlastnost nebo indexer musí mít deklarující deklaraci i implementující deklaraci. Podpisy obou deklarací se musí shodovat. Vzhledem k tomu, že deklarace deklarace používá stejnou syntaxi jako automaticky implementovaná vlastnost, nemůže být implementující deklarace automaticky implementovaná vlastnost. Příslušenství musí obsahovat těla.