Típus- és tagdeklarációkkal kapcsolatos partial hibák és partial figyelmeztetések

A partial típus és partial tagdeklarációkkal kapcsolatos alábbi hibák fordulhatnak elő:

  • CS0260: Hiányzik a részleges módosító a típusdeklaráción; létezik egy másik ilyen típusú részleges deklaráció
  • CS0261: A részleges típusdeklarációknak minden osztálynak, minden szerkezetnek vagy minden interfésznek kell lenniük
  • CS0262: A részleges típusú deklarációk ütköző akadálymentességi módosítókkal rendelkeznek
  • CS0263: A részleges típusdeklarációk nem adhatnak meg különböző alaposztályokat
  • CS0264: A részleges típusdeklarációknak azonos típusú paraméternevekkel kell rendelkezniük ugyanabban a sorrendben
  • CS0265: A részleges típusdeklarációk inkonzisztens kényszerekkel rendelkeznek a típusparaméterre vonatkozóan
  • CS0267: A "partial" módosító csak közvetlenül a "", "class", "record",struct ""interface vagy metódus vagy tulajdonság visszatérési típusa előtt jelenhet meg.
  • CS0282: Nincs definiált sorrend a mezők között több részleges osztály vagy szerkezet "típus" deklarációjában. A rendezés megadásához minden példánymezőnek ugyanabban a deklarációban kell lennie.
  • CS0501: A "tagfüggvénynek" deklarálnia kell egy törzset, mert nincs megjelölve abstract, externvagy partial
  • CS0750: Egy részleges tag nem rendelkezhet "abstract" módosítóval.
  • CS0751: Részleges tagot részlegesen class vagy részlegesen kell deklarálni struct
  • CS0754: A részleges tag nem valósíthat meg explicit módon interfészmetódust.
  • CS0755: Mindkét részmetódus-deklarációnak bővítménymetódusnak kell lennie, vagy egyik sem lehet bővítménymetódus.
  • CS0756: Előfordulhat, hogy egy részleges metódus nem rendelkezik több definiáló deklarációval.
  • CS0757: Előfordulhat, hogy egy részleges módszer nem rendelkezik több végrehajtási deklarációval.
  • CS0759: Nem található meghatározó deklaráció a részleges módszerre vonatkozó deklaráció végrehajtásához.
  • CS0761: A részleges metódus deklarációi method<T> inkonzisztens típusú paraméterkorlátokkal rendelkeznek.
  • CS0762: Nem hozható létre delegálás a metódusból, mert végrehajtási deklaráció nélkül részleges metódus
  • CS0763: Mindkét részleges módszer deklarációjának kell lennie static , vagy egyik sem lehet static.
  • CS0764: Mindkét részmetódus-deklarációnak meg kell lennie unsafe , vagy egyik sem lehet unsafe
  • CS1067: A részleges deklarációknak azonos típusú paraméternevekkel és varianciájú módosítókkal kell rendelkezniük ugyanabban a sorrendben.
  • CS8142: Mindkét részleges tagdeklarációnak ugyanazokat a rekordelemneveket kell használnia.
  • CS8663: Mindkét részleges tagdeklarációnak olvashatónak kell lennie, vagy egyik sem olvasható
  • CS8796: A részleges metódusnak akadálymentességi módosítókkal kell rendelkeznie, mert érvénytelen visszatérési típussal rendelkezik.
  • CS8795: A részleges tagnak implementálási résztel kell rendelkeznie, mert akadálymentességi módosítókkal rendelkezik.
  • CS8797: A részleges metódusnak akadálymentességi módosítókkal kell rendelkeznie, mert "out" paraméterekkel rendelkezik.
  • CS8798: A részleges metódusnak akadálymentességi módosítókkal kell rendelkeznie, mert rendelkezik ""virtual, "", "override"sealed, ""new vagy "extern" módosítóval.
  • CS8799: Mindkét részleges tag deklarációnak azonos akadálymentességi módosítókkal kell rendelkeznie.
  • CS8800: Mindkét részleges tagdeklarációnak azonos , , virtualés override módosító kombinációkkal sealednewkell rendelkeznie.
  • CS8817: Mindkét részleges metódusdeklarációnak azonos visszatérési típussal kell rendelkeznie.
  • CS8818: A részleges tagdeklarációknak egyező visszatérési ref értékekkel kell rendelkezniük.
  • CS8863: Csak egyetlen részleges típusdeklaráció rendelkezhet paraméterlistával
  • CS8988: A scoped paraméter módosítója nem egyezik a részleges definícióval.
  • CS9248: A részleges tulajdonságnak rendelkeznie kell megvalósítási részvel.
  • CS9249: A részleges tulajdonságnak definíciórészrel kell rendelkeznie.
  • CS9250: Előfordulhat, hogy egy részleges tulajdonság nem rendelkezik több definiáló deklarációval, és nem lehet automatikus tulajdonság.
  • CS9251: Előfordulhat, hogy egy részleges tulajdonság nem rendelkezik több végrehajtási deklarációval
  • CS9252: A tulajdonságkiegészítőt implementálni kell, mert deklarálva van a definíciós részben
  • CS9253: A tulajdonság tartozéka nem valósít meg a definíciós részben deklarált kiegészítőt
  • CS9254: A tulajdonság tartozékának meg kell egyeznie a definíciós részével
  • CS9255: Mindkét részleges tulajdonságdeklarációnak azonos típusúnak kell lennie.
  • CS9256: A részleges tulajdonságdeklarációk aláírási eltérésekkel rendelkeznek.
  • CS9257: Mindkét részleges tulajdonságdeklarációnak kötelezőnek kell lennie, vagy egyik sem kötelező
  • CS9275: A részleges tagnak rendelkeznie kell megvalósítási részvel.
  • CS9276: A részleges tagnak definíciós részvel kell rendelkeznie.
  • CS9277: Előfordulhat, hogy a részleges tag nem rendelkezik több meghatározó deklarációval.
  • CS9278: Előfordulhat, hogy a részleges tag nem rendelkezik több végrehajtási deklarációval.
  • CS9279: A részleges esemény nem rendelkezhet inicializálóval.
  • CS9280: Csak részleges konstruktor implementálási deklarációja rendelkezhet inicializálóval.

A következő szakaszok ismertetik ezeknek a hibáknak és figyelmeztetéseknek az okát és javítását.

Részleges típusok

  • CS0260: Hiányzik a részleges módosító a típusdeklaráción; létezik egy másik ilyen típusú részleges deklaráció
  • CS0261: A részleges típusdeklarációknak minden osztálynak, minden szerkezetnek vagy minden interfésznek kell lenniük
  • CS0262: A részleges típusú deklarációk ütköző akadálymentességi módosítókkal rendelkeznek
  • CS0263: A részleges típusdeklarációk nem adhatnak meg különböző alaposztályokat
  • CS0264: A részleges típusdeklarációknak azonos típusú paraméternevekkel kell rendelkezniük ugyanabban a sorrendben
  • CS0265: A részleges típusdeklarációk inkonzisztens kényszerekkel rendelkeznek a típusparaméterre vonatkozóan
  • CS0267: A "partial" módosító csak közvetlenül a "", "class", "record",struct ""interface vagy metódus vagy tulajdonság visszatérési típusa előtt jelenhet meg.
  • CS8863: Csak egyetlen részleges típusdeklaráció rendelkezhet paraméterlistával

A részleges típusdeklaráció miatt a fordító a következő figyelmeztetést bocsáthatja ki:

  • CS0282: Nincs definiált sorrend a mezők között több részleges class vagy struct "típus" deklarációban. A rendezés megadásához minden példánymezőnek ugyanabban a deklarációban kell lennie.

Ezek a hibák akkor fordulnak elő, ha a részleges típus deklarációi megsértik a részleges típusok szabályait.

  • Adja hozzá a partial módosítót a típus összes deklarációjához, mert ha több deklarációra osztott fel egy típust, minden résznek tartalmaznia kell a kulcsszót (CS0260).
  • Győződjön meg arról, hogy minden deklaráció ugyanazt a típusú kulcsszót használja, mert a keverésclassstruct, a , recordés interface az azonos típusú részeken nem engedélyezett (CS0261). Minden deklarációban konzisztens hozzáférési módosítókat kell biztosítania, például az összes alkatrészt public vagy az összes részt internal, mivel a különböző deklarációk ütköző akadálymentessége kétértelműséget okoz a típus kívánt láthatóságával kapcsolatban (CS0262).
  • Ellenőrizze, hogy az összes deklaráció ugyanazt az alaposztályt adja-e meg, mert egy típus csak egy alaposztálytól örökölhet, így több különböző alaposztály ütközése (CS0263).
  • Általános részleges típusok esetén győződjön meg arról, hogy az összes deklaráció ugyanabban a sorrendben sorolja fel ugyanazokat a típusparamétereket, mert a típusparaméterek nevének pontosan meg kell egyeznie az összes részre (CS0264).
  • Ellenőrizze, hogy a típusparaméterekre vonatkozó korlátozások minden deklarációban konzisztensek maradnak-e, mert az inkonzisztens megkötések kétértelműek lennének a típusparaméterekhez használható típusokkal (CS0265).
  • Helyezze a partial kulcsszót közvetlenül a típus kulcsszó (class, , recordvagy struct) elé, interfacemert a nyelv szintaxisa megköveteli ezt az adott rendezést (CS0267).
  • Csak egy részleges deklaráción deklaráljon elsődleges konstruktort, mert több elsődleges konstruktor ütközne azzal kapcsolatban, hogy mely konstruktorparamétereket és inicializálási logikát használja (CS8863).

Ha több fájlban deklarál mezőket részleges strukturálási típushoz, az összes meződeklarációt egyetlen fájlba kell összesítenie, ha a memóriaelrendezési sorrend számít, mivel a fordító nem tud garantálni egy adott sorrendet, ha a mezők több fájlra vannak felosztva (CS0282). Másik lehetőségként, ha az elrendezés sorrendje nem számít, alkalmazhatja az System.Runtime.InteropServices.StructLayoutAttribute elemet a LayoutKind.Auto értékkel, hogy a futtatási környezet automatikusan optimalizálja az elrendezést.

Részleges tagok

  • CS0750: Egy részleges tag nem rendelkezhet "abstract" módosítóval.
  • CS0751: Részleges tagot részlegesen class vagy részlegesen kell deklarálni struct
  • CS0754: A részleges tag nem valósíthat meg explicit módon interfészmetódust.
  • CS0763: Mindkét részleges módszer deklarációjának kell lennie static , vagy egyik sem lehet static.
  • CS0764: Mindkét részmetódus-deklarációnak meg kell lennie unsafe , vagy egyik sem lehet unsafe
  • CS8142: Mindkét részleges tagdeklarációnak ugyanazokat a rekordelemneveket kell használnia.
  • CS8663: Mindkét részleges tagdeklarációnak olvashatónak kell lennie, vagy egyik sem olvasható
  • CS8799: Mindkét részleges tag deklarációnak azonos akadálymentességi módosítókkal kell rendelkeznie.
  • CS8800: Mindkét részleges tagdeklarációnak azonos , , virtualés override módosító kombinációkkal sealednewkell rendelkeznie.
  • CS8818: A részleges tagdeklarációknak egyező visszatérési ref értékekkel kell rendelkezniük.
  • CS8988: A scoped paraméter módosítója nem egyezik a részleges definícióval.
  • CS9275: A részleges tagnak rendelkeznie kell megvalósítási részvel.
  • CS9276: A részleges tagnak definíciós részvel kell rendelkeznie.
  • CS9277: Előfordulhat, hogy a részleges tag nem rendelkezik több meghatározó deklarációval.
  • CS9278: Előfordulhat, hogy a részleges tag nem rendelkezik több végrehajtási deklarációval.

Ezek a hibák akkor fordulnak elő, ha a részleges tag deklarációi megsértik a részleges metódusokra , tulajdonságokra, indexelőkre és eseményekre vonatkozó szabályokat.

  • Távolítsa el a módosítót a abstract részleges tagokból, mert az absztrakt tagoknak származtatott osztályokra van szükségük a megvalósítások biztosításához. Ez a követelmény ütközik azzal a részleges tagmintával, amelyben a végrehajtás a végrehajtási nyilatkozatban (CS0750) szerepel.
  • Deklarálja a részleges tagokat a módosítót tartalmazó típuson belül, mert a partial részleges tagok csak részleges típusok (CS0751) között létezhetnek.
  • Távolítsa el a részleges tagok explicit felületi implementációit, mert a kétrészes deklarálási minta nem kompatibilis az explicit felület implementálási szintaxisával (CS0754).
  • A `static` módosítót mindkét deklarációban következetesen bele kell foglalni vagy ki kell hagyni, mert a statikus és példánytagok keveredése kétértelművé tenné, hogyan hívható meg a tag (CS0763).
  • A módosítót mindkét deklarációban következetesen vegye fel vagy hagyja ki unsafe , mert az inkonzisztens nem biztonságos környezetek biztonsági problémákat vagy fordítási hibákat okozhatnak (CS0764).
  • Mindkét deklarációban azonos elemneveket használjon, mert a különböző nevek összezavarnák, hogy mely nevek érhetők el a fogyasztókódban (CS8142).
  • A módosítót readonly mindkét deklarációban következetesen vegye fel vagy hagyja ki, mert a csak olvasható és nem csak olvasható deklarációk keveredése bizonytalanságot okoz azzal kapcsolatban, hogy a tag módosíthatja-e a példány állapotát (CS8663).
  • Azonos akadálymentességi módosítókat (például public, private, protectedvagy internal) használjon mindkét deklaráción, mert a különböző akadálymentességi szintek ütköznének a tag láthatóságával (CS8799).
  • Alkalmazza mindkét deklarációra a , virtual, overrideés sealed a módosítók azonos kombinációjátnew, mivel ezek a módosítók szabályozzák az öröklést és a polimorfizmus viselkedését, amelyeknek konzisztensnek kell lenniük (CS8800).
  • Használjon egyező ref visszatérési módosítókat mindkét deklarációban, mert a nem konzisztens visszatérési referencia viselkedés típusbiztonsági problémákat (CS8818) okozna.
  • Alkalmazza a scoped módosítót következetesen mindkét deklaráció paramétereire, mert ez a módosító szabályozza az újraf paraméterek élettartamát, és meg kell egyeznie a memóriabiztonság (CS8988) biztosításához.
  • Adjon meg végrehajtási deklarációt minden olyan részleges tag számára, amely rendelkezik meghatározó deklarációval, mert a részleges tagoknak mindkét résznek teljesnek kell lenniük (CS9275, CS9276).
  • Győződjön meg arról, hogy minden részleges tag pontosan egy meghatározó deklarációval és egy végrehajtási deklarációval rendelkezik, mivel több deklaráció kétértelműséget eredményezne azzal kapcsolatban, hogy melyik definíciót vagy implementációt kell használni (CS9277, CS9278).

Részleges metódusok

  • CS0501: A "tagfüggvénynek" deklarálnia kell egy törzset, mert nincs megjelölve abstract, externvagy partial
  • CS0755: Mindkét részmetódus-deklarációnak bővítménymetódusnak kell lennie, vagy egyik sem lehet bővítménymetódus.
  • CS0756: Előfordulhat, hogy egy részleges metódus nem rendelkezik több definiáló deklarációval.
  • CS0757: Előfordulhat, hogy egy részleges módszer nem rendelkezik több végrehajtási deklarációval.
  • CS0759: Nem található meghatározó deklaráció a részleges módszerre vonatkozó deklaráció végrehajtásához.
  • CS0761: A részleges metódus deklarációi method<T> inkonzisztens típusú paraméterkorlátokkal rendelkeznek.
  • CS0762: Nem hozható létre delegálás a metódusból, mert végrehajtási deklaráció nélkül részleges metódus
  • CS1067: A részleges deklarációknak azonos típusú paraméternevekkel és varianciájú módosítókkal kell rendelkezniük ugyanabban a sorrendben.
  • CS8796: A részleges metódusnak akadálymentességi módosítókkal kell rendelkeznie, mert érvénytelen visszatérési típussal rendelkezik.
  • CS8795: A részleges tagnak implementálási résztel kell rendelkeznie, mert akadálymentességi módosítókkal rendelkezik.
  • CS8797: A részleges metódusnak akadálymentességi módosítókkal kell rendelkeznie, mert "out" paraméterekkel rendelkezik.
  • CS8798: A részleges metódusnak akadálymentességi módosítókkal kell rendelkeznie, mert rendelkezik ""virtual, "", "override"sealed, ""new vagy "extern" módosítóval.
  • CS8817: Mindkét részleges metódusdeklarációnak azonos visszatérési típussal kell rendelkeznie.

Ezek a hibák akkor fordulnak elő, ha a részleges metódusok deklarációi megsértik a részleges metódusok szabályait.

  • Adja hozzá a partial módosítót a metódusdeklarációhoz, vagy adjon meg egy metódustörzset, mert a implementációk nélküli metódusokat meg kell jelölni , abstractvagy extern (partial) jelöléssel.
  • Győződjön meg arról, hogy mindkét deklaráció következetesen tartalmazza vagy kihagyja a bővítménymetódus szintaxisát (this az első paraméter módosítóját), mert a bővítmény és a nem bővítmény típusú deklarációk keverése nem kompatibilis metódusadákt (CS0755) hoz létre.
  • Távolítsa el az ismétlődő definiáló deklarációkat (a metódustörzsek nélküli deklarációkat), mert minden részleges metódusnak csak egy definíciója lehet (CS0756).
  • Távolítsa el a duplikált implementálási deklarációkat (a metódustestekkel rendelkező deklarációkat), mert mindegyik részleges módszernek csak egy implementációja lehet (CS0757).
  • Adjon hozzá egy megfelelő meghatározó deklarációt az egyes végrehajtási deklarációkhoz, mivel a törzstel rendelkező összes részleges módszernek törzs nélkül kell rendelkeznie egyező aláírási deklarációval (CS0759).
  • Győződjön meg arról, hogy a típusparaméter-megkötések mindkét deklarációban megegyeznek, mert az inkonzisztens megkötések kétértelműséget hoznak létre az általános metódus (CS0761) típusával kapcsolatban.
  • Adjon meg végrehajtási deklarációt, mielőtt létrehoz egy delegáltat a metódusból, mert a meghatalmazottaknak konkrét metódus-implementációra van szükségük (CS0762).
  • Általános részleges metódusok esetén győződjön meg arról, hogy mindkét deklaráció ugyanazt a típusparaméternevet és varianciamódosítót használja ugyanabban a sorrendben, mert a nem egyező általános aláírások nem kompatibilis metódusdeklarációkat (CS1067) hoznak létre.
  • Adjon hozzá explicit akadálymentességi módosítókat (például public, private, protectedvagy internal) , ha a metódus nemvoid típust ad vissza, mert a nem érvénytelen részleges metódusoknak meghatározott akadálymentességgel kell rendelkezniük ahhoz, hogy más kódból hívhatók legyenek (CS8796).
  • Adjon meg végrehajtási deklarációt az akadálymentességi módosítók megadásakor, mert az akadálymentes részleges metódusoknak implementációkat kell meghívni (CS8795).
  • Adjon hozzá explicit hozzáférhetőségi módosítókat, ha a metódus out paraméterekkel rendelkezik, mivel a kimeneti paraméterekkel rendelkező metódusoknak meghatározott hozzáférhetőséggel kell rendelkezniük ahhoz, hogy hívhatóak legyenek (CS8797).
  • Explicit láthatósági módosítókat kell megadni a virtual, override, sealed, new vagy extern módosítók használatakor, mivel ezek a módosítók befolyásolják a metódus láthatóságát, és explicit láthatósági specifikációt (CS8798) igényelnek.
  • Győződjön meg arról, hogy mindkét deklaráció ugyanazt a visszatérési típust adja meg, mert a különböző visszatérési típusok inkompatibilis metódus-aláírásokat (CS8817) hoznak létre.

Részleges tulajdonságok

  • CS9248: A részleges tulajdonságnak rendelkeznie kell megvalósítási részvel.
  • CS9249: A részleges tulajdonságnak definíciórészrel kell rendelkeznie.
  • CS9250: Előfordulhat, hogy egy részleges tulajdonság nem rendelkezik több definiáló deklarációval, és nem lehet automatikus tulajdonság.
  • CS9251: Előfordulhat, hogy egy részleges tulajdonság nem rendelkezik több végrehajtási deklarációval
  • CS9252: A tulajdonságkiegészítőt implementálni kell, mert deklarálva van a definíciós részben
  • CS9253: A tulajdonság tartozéka nem valósít meg a definíciós részben deklarált kiegészítőt
  • CS9254: A tulajdonság tartozékának meg kell egyeznie a definíciós részével
  • CS9255: Mindkét részleges tulajdonságdeklarációnak azonos típusúnak kell lennie.
  • CS9257: Mindkét részleges tulajdonságdeklarációnak kötelezőnek kell lennie, vagy egyik sem kötelező

A részleges tulajdonság vagy indexelő deklaráció miatt a fordító a következő figyelmeztetést bocsáthatja ki:

  • CS9256: A részleges tulajdonságdeklarációk aláírási eltérésekkel rendelkeznek.

Ezek a hibák és figyelmeztetések akkor fordulnak elő, ha a részleges tulajdonság vagy indexelő deklarációk megsértik a részleges tulajdonságokra vonatkozó szabályokat.

  • Adjon meg végrehajtási deklarációt minden részleges tulajdonságmeghatározó deklarációhoz, mert a részleges tulajdonságokhoz mindkét résznek teljesnek kell lennie (CS9248).
  • Adjon meg egy meghatározó deklarációt minden részleges tulajdonságmegvalósító deklarációhoz, mert minden implementációnak rendelkeznie kell egy megfelelő definícióval (CS9249).
  • Távolítsa el az ismétlődő definiálási deklarációkat, és kerülje az automatikus tulajdonságszintaxis használatát a végrehajtási deklarációban, mivel minden részleges tulajdonság csak egy definícióval rendelkezhet, és a megvalósításnak explicit kiegészítő szerveket (CS9250) kell tartalmaznia.
  • Távolítsa el az ismétlődő implementálási deklarációkat, mert minden részleges tulajdonság csak egy implementációval rendelkezhet (CS9251).
  • Implementálja a definiáló deklarációban megadott összes lekérdezőt, mert az implementációs deklarációnak törzseket kell biztosítania a definícióban (CS9252) meghatározott minden lekérdező (get, set vagy init) számára.
  • Távolítsa el a definíciós deklarációban nem deklarált tartozékokat a végrehajtási deklarációból, mert csak a definíciórészben (CS9253) deklarált tartozékokat implementálhatja.
  • Győződjön meg arról, hogy a kiegészítő aláírások megfelelnek mindkét deklarációnak, beleértve a tartozék típusát (beolvasás, beállítás vagy init) és a módosítókat is, mivel a nem inkonzisztens tartozékdefiníciók inkompatibilis tulajdonságdeklarációkat (CS9254) hoznak létre.
  • Győződjön meg arról, hogy mindkét deklaráció ugyanazt a tulajdonságtípust adja meg, mert a különböző típusok nem kompatibilis tulajdonságadékokat (CS9255) hoznak létre.
  • Győződjön meg arról, hogy mindkét deklaráció következetesen tartalmazza vagy kihagyja a required módosító értékét, mert a szükséges és a nem kötelező deklarációk keveredése kétértelműséget okoz azzal kapcsolatban, hogy a tulajdonságot inicializálni kell-e (CS9257).
  • Tekintse át és javítsa ki a deklarálás és a végrehajtási deklarációk közötti aláírási eltéréseket, mert az akadálymentességi módosítók, a visszatérési típusok vagy a paraméterlisták (indexelők esetében) eltérései váratlan viselkedést okozhatnak (CS9256).

Részleges események és konstruktorok

  • CS9279: A részleges esemény nem rendelkezhet inicializálóval.
  • CS9280: Csak részleges konstruktor implementálási deklarációja rendelkezhet inicializálóval.

Inicializálót deklarált egy részleges konstruktor definiáló deklarációján vagy egy részleges eseménydeklaráción. Távolítsa el az inicializálót.