Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A metódusparaméterek módosítójára vonatkozó
Az utasítással és a lock szálszinkronizálással kapcsolatos hibák:
- CS0225: A params paraméternek egydimenziós tömbnek kell lennie, vagy érvényes gyűjteménytípussal kell rendelkeznie
- CS0231: A params paraméternek egy formális paraméterlistában az utolsó paraméternek kell lennie.
- CS0466: Az "1. módszer" nem rendelkezhet params paraméterrel, mivel a "method2" nem
- CS0674: Ne használja
System.ParamArrayAttributevagySystem.ParamArrayAttribute/System.Runtime.CompilerServices.ParamCollectionAttribute. Használja inkább a kulcsszótparams. - CS0758: Mindkét részleges metódusdeklarációnak paramétert
paramskell használnia, vagy egyik sem használhat paramétertparams - CS1104: A paramétertömb nem használható módosítóval
thisbővítménymetóduson. - CS1611: A params paraméter nem deklarálható
refout - CS1670:
paramsnem érvényes ebben a környezetben - CS1751: Paramétertömb alapértelmezett értéke nem adható meg.
- CS9218: A metódus típusargumentumai nem vonhatók ki a használatból, mert dinamikus típusú argumentumot használ, és a metódus nem tömbparaméter-gyűjtési paraméterrel rendelkezik. Próbálja meg explicit módon megadni a típusargumentumokat.
- CS9223: A params gyűjtemény létrehozása a konstruktor meghívásának végtelen láncát eredményezi.
- CS9224: A metódus nem lehet kevésbé látható, mint a params gyűjteményt tartalmazó tag.
- CS9225: A konstruktor nem inicializálva hagyja a szükséges tagot.
- CS9227: A típus nem tartalmaz megfelelő példánymetódus
Adddefinícióját. - CS9228: A nem tömbparamok gyűjteménytípusának olyan konstruktorral kell rendelkeznie, amely argumentumok nélkül hívható meg.
Metódusdeklarációs szabályok
Az alábbi hibák azt jelzik, hogy módosító használata params egy paraméteren, ha a módosító nem engedélyezett ebben a params környezetben:
- CS0231: A params paraméternek egy formális paraméterlistában az utolsó paraméternek kell lennie.
- CS1104: A paramétertömb nem használható módosítóval
thisbővítménymetóduson. - CS1611: A params paraméter nem deklarálható
refout - CS1670:
paramsnem érvényes ebben a környezetben - CS1751: Paramétertömb alapértelmezett értéke nem adható meg.
A fordító a következő szabályokat kényszeríti ki a params módosító metódusparaméteren való használatára:
- A
paramsmódosító csak a formális paraméterlista utolsó paraméterén engedélyezett. Ide tartoznak az alapértelmezett értékkel rendelkező paraméterek. - A módosító használatakor nem lehet alapértelmezett argumentumot megadni a
paramsparaméterhez. - A
paramsmódosító nem alkalmazható a referenciaparaméterre. A referenciaparaméter az ,ref readonlyvagyrefoutmódosítóval rendelkezőinparaméter. - A
paramsmódosító nem kombinálható athismódosítóval bővítménymetóduson. - A
paramsmódosító nem használható túlterhelt operátorokon.
A C# 12 előtti verziókban a params módosító nem használható névtelen metódus vagy lambda kifejezés paraméterén.
Paraméter- és argumentumtípus-szabályok
A következő hibák azt jelzik, hogy a használt params paraméter típusa érvénytelen:
- CS9218: A metódus típusargumentumai nem vonhatók ki a használatból, mert dinamikus típusú argumentumot használ, és a metódus nem tömbparaméter-gyűjtési paraméterrel rendelkezik. Próbálja meg explicit módon megadni a típusargumentumokat.
- CS0225: A params paraméternek egydimenziós tömbnek kell lennie, vagy érvényes gyűjteménytípussal kell rendelkeznie
- CS9227: A típus nem tartalmaz megfelelő példánymetódus
Adddefinícióját. - CS9228: A nem tömbparamok gyűjteménytípusának olyan konstruktorral kell rendelkeznie, amely argumentumok nélkül hívható meg.
A C# 13 előtti verziókban a params módosító csak egydimenziós tömbökön engedélyezett. Más típus nem érvényes.
A C# 13-tól kezdve bármilyen érvényes gyűjteménytípus használható. Bizonyos korlátozások azonban továbbra is érvényben maradnak. A gyűjteménytípusnak ugyanazokat a szabályokat kell követnie, mint egy gyűjteménykifejezés céljának.
Egyéb paramhibák
Az alábbi hibák a módosító használatával params kapcsolatos egyéb problémákat jeleznek:
- CS0466: Az "1. módszer" nem rendelkezhet params paraméterrel, mivel a "method2" nem
- CS0674: Ne használja
System.ParamArrayAttributevagySystem.Runtime.CompilerServices.ParamCollectionAttribute. Használja inkább a kulcsszótparams. - CS0758: Mindkét részleges metódusdeklarációnak paramétert
paramskell használnia, vagy egyik sem használhat paramétertparams - CS9223: A params gyűjtemény létrehozása a konstruktor meghívásának végtelen láncát eredményezi.
- CS9224: A metódus nem lehet kevésbé látható, mint a params gyűjteményt tartalmazó tag.
- CS9225: A konstruktor nem inicializálva hagyja a szükséges tagot.
Az illesztőt implementáló metódusnak tartalmaznia kell a params módosítót, ha és csak akkor, ha az interfésztag rendelkezik a params módosítóval. Hasonlóképpen, egy metódus mindkét deklarációjának tartalmaznia partial kell a params módosítót, vagy egyik sem tartalmazhatja a params módosítót.
A módosító használata params kötelező. A megfelelő attribútumok sem alkalmazhatók.System.ParamArrayAttribute System.Runtime.CompilerServices.ParamCollectionAttribute
A fordító az előző listában az utolsó három hiba egyikét generálja, ha a gyűjteménytípus létrehozásához létrehozott kód érvénytelen:
- A fordító CS9223-at bocsát ki, amikor a gyűjtemény létrehozásához kibocsátott kód egy azonos típusú paramgyűjteményt is tartalmaz. A metódus általában
Addazonos típusú gyűjteménytparamshasznál. - A fordító CS9224-et bocsát ki, ha a
Creategyűjteménytípus metódusa kevésbé érhető el, mint a gyűjteménytípus paraméterét használóparamsmetódus. - A fordító CS9225-öt bocsát ki, ha a gyűjteménytípusnak van egy kötelező tagja, és a paraméter nélküli konstruktor nem inicializálja a tagot, és a System.Diagnostics.CodeAnalysis.SetsRequiredMembersAttribute paraméter nélküli konstruktoron van.