Típus- és tagdeklarációkkal kapcsolatos partial hibák és partial figyelmeztetések
Cikk
A típus- és partial tagdeklarációkkal kapcsolatban partial számos hiba lépett fel:
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 , , sealedés new módosító kombinációkkal virtualoverridekell 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ő
CS9258: Ebben a nyelvi verzióban a "field" kulcsszó egy szintetizált háttérmezőhöz kapcsolódik a tulajdonsághoz. Ha nem szeretne szintetizált háttérmezőt létrehozni, és a meglévő tagra hivatkozni, használja helyette a "" vagy athis.field "@field" kifejezést.
CS9263: Egy részleges tulajdonság nem rendelkezhet inicializálóval mind a definíció, mind a megvalósítás során.
A mező által támogatott tulajdonságokhoz a következő figyelmeztetések hozhatók létre:
CS9264: A nem null értékű tulajdonságnak nem null értékűnek kell lennie a konstruktorból való kilépéskor. Fontolja meg a "szükséges" módosító hozzáadását, vagy a tulajdonság null értékűként való deklarálását vagy "[field: MaybeNull, AllowNull]" attribútumok hozzáadását.*
CS9266: Az egyik tartozéknak ""field kell használnia, mert a másik tartozék használja.
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.
Bármely részleges típus esetén a partial kulcsszónak azonnal meg kell előznie classa következőt: , recordvagy structinterface. A fordító hibaüzenetet ad ki, ha bármilyen más sorrendben jelenik meg. Ráadásul:
Egy részleges típusú deklarációnak meg kell egyeznie a típus (class, , struct, record class, record struct, readonly structvagy readonly record struct) szempontjából.
Minden deklarációnak tartalmaznia kell a partial módosítót.
Az általános részleges típus deklarációinak azonos sorrendben kell tartalmazniuk ugyanazokat a típusparamétereket.
A deklaráció egyes részeit nem kell megismételni egy típus összes deklarációján. Ha azonban ezek az elemek több deklarációban is partial ismétlődnek, a következőknek kell megfelelniük:
Bármilyen hozzáférési módosító, például public.
Bármely alaposztály vagy implementált interfész.
A típusparaméterekre vonatkozó korlátozások.
Az elsődleges konstruktorok legfeljebb egy deklaráción deklarálhatók részleges típus esetén.
A fordító figyelmezteti, ha több mező van deklarálva több fájlban egy partial struct típushoz. Ha az elrendezési sorrend fontos, deklarálnia kell az összes mezőt ugyanabban a fájlban. Ha a sorrend nem számít, használhatja az System.Runtime.InteropServices.StructLayoutAttributeLayoutKind.Auto értéket.
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 , , sealedés new módosító kombinációkkal virtualoverridekell 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.
A részleges tagoknak két nyilatkozatuk van. A végrehajtás nélküli deklaráció a deklaráló nyilatkozat. A végrehajtási nyilatkozat a végrehajtási nyilatkozat. A részleges tagok csak típusban partial engedélyezettek. A részleges tagok nem lehetnek abstract. A részleges tagok nem implementálhatnak explicit módon felületet. A részleges tag mindkét nyilatkozatának azonos aláírással kell rendelkeznie. Például a két vagy egyik deklaráció sem tartalmazhatja a módosítókat vagy unsafe a static módosítókat.
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.
Bizonyos partial metódusdeklarációkhoz nincs szükség implementálási deklarációra. Vagyis ha a tag visszatér void, nem deklarál hozzáférési módosítókat (beleértve az alapértelmezett private módosítót), és nem tartalmazza a virtual, override, sealedvagy new módosítók egyikét sem. Ellenkező esetben a részleges módszernek tartalmaznia kell a deklarálási és végrehajtási nyilatkozatokat is.
Ha egy részleges módszer végrehajtási nyilatkozatot tartalmaz, mindkét deklarációnak azonosnak kell lennie. Pontosan egy implementációs deklaráció definiálható.
Részleges tulajdonságok
A következő hibák a részleges tulajdonság- vagy indexelődeklarációk hibáit jelzik:
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ő
Az alábbi figyelmeztetés aláírási különbséget jelez egy részleges tulajdonság deklarálásában és implementálásában:
CS9256: A részleges tulajdonságdeklarációk aláírási eltérésekkel rendelkeznek.
A részleges tulajdonságnak vagy indexelőnek deklaráló deklarációval és végrehajtási deklarációval kell rendelkeznie. Mindkét deklaráció aláírásának egyeznie kell. Mivel a deklarálási deklaráció ugyanazt a szintaxist használja, mint egy automatikusan implementált tulajdonság, a implementálási deklaráció nem lehet automatikusan implementált tulajdonság. A tartozéknak legalább egy tartozéktörzset kell tartalmaznia. A C# 13-tól kezdődően a field kulcsszóval egy kiegészítőt deklarálhat tömör szintaxissal:
C#
publicpartialint ImplementingDeclaration { get => field; set; }
mező által támogatott tulajdonságok
CS9258: Ebben a nyelvi verzióban a "field" kulcsszó egy szintetizált háttérmezőhöz kapcsolódik a tulajdonsághoz. Ha nem szeretne szintetizált háttérmezőt létrehozni, és a meglévő tagra hivatkozni, használja helyette a "" vagy athis.field "@field" kifejezést.
CS9263: Egy részleges tulajdonság nem rendelkezhet inicializálóval mind a definíció, mind a megvalósítás során.
CS9264: A nem null értékű tulajdonságnak nem null értékűnek kell lennie a konstruktorból való kilépéskor. Fontolja meg a "szükséges" módosító hozzáadását, vagy a tulajdonság null értékűként való deklarálását vagy "[field: MaybeNull, AllowNull]" attribútumok hozzáadását.*
CS9266: Az egyik tartozéknak ""field kell használnia, mert a másik tartozék használja.
Fontos
A field kulcsszó egy előzetes verziójú funkció a C# 13-ban. A környezetfüggő kulcsszó használatához a .NET 9-et kell használnia, és be kell állítania <LangVersion> az elemet preview a field projektfájlban.
Körültekintően használja a field kulcsszó funkciót egy olyan osztályban, amelynek neve fieldegy mező. Az új field kulcsszó árnyékot ad egy tulajdonság-tartozék hatókörében elnevezett field mezőnek. Módosíthatja field a változó nevét, vagy a @ jogkivonat használatával hivatkozhat az field azonosítóra @field. További információkért olvassa el a kulcsszó funkciós specifikációjátfield.
A C# 13-tól kezdődően az előzetes verziójú, field háttérbeli tulajdonságok lehetővé teszik a fordító szintetizált háttérmezőjének elérését egy tulajdonsághoz. A CS9258 azt jelzi, hogy van egy változó neve field, amelyet a környezetfüggő kulcsszó fieldrejthet el.
A CS9263 azt jelzi, hogy a deklarálási nyilatkozat implementációt is tartalmaz. Előfordulhat, hogy az implementáció hozzáfér az adott tulajdonsághoz tartozó fordító szintetizált háttérmezőhöz. A CS9264 azt jelzi, hogy a használata field nem null értékű háttérmezőt feltételez, miközben a tulajdonságdeklaráció null értékű. A fordító feltételezi, hogy a háttérmező és a tulajdonság is ugyanazzal a null értékkel rendelkezik. Az attribútumot hozzá kell adnia a [field:MaybeNull, AllowNull] tulajdonságdeklarációhoz, hogy az field érték null értékűnek minősüljön. A CS9266 azt jelzi, hogy egy tulajdonság egyik tartozéka a field kulcsszót használja, a másik viszont egy kézzel deklarált háttérmezőt. A figyelmeztetés azt jelzi, hogy ezt véletlenül tette.
Dolgozzon együtt velünk a GitHubon
A tartalom forrása a GitHubon található, ahol létrehozhat és áttekinthet problémákat és lekéréses kérelmeket is. További információért tekintse meg a közreműködői útmutatónkat.
.NET-visszajelzés
A(z) .NET egy nyílt forráskód projekt. Visszajelzés adásához válasszon egy hivatkozást: