Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Chyby a upozornění související s modifikátorem
K příkazu a synchronizaci vláken dochází k několika chybámlock:
- CS0225: Parametr parametru musí být jednorozměrné pole nebo musí mít platný typ kolekce.
- CS0231: Parametr parametru musí být posledním parametrem v seznamu formálních parametrů.
- CS0466: Metoda1 by neměla mít parametr params, protože metoda2 nemá
- CS0674: Nepoužívejte
System.ParamArrayAttributeneboSystem.ParamArrayAttribute/System.Runtime.CompilerServices.ParamCollectionAttribute.paramsMísto toho použijte klíčové slovo. - CS0758: Obě deklarace částečné metody musí používat
paramsparametr nebo ani jeden parametrparams - CS1104: Pole parametrů nelze použít s
thismodifikátorem v metodě rozšíření. - CS1611: Parametr parametrů nelze deklarovat jako in
refneboout - CS1670:
paramsV tomto kontextu není platný - CS1751: Nelze zadat výchozí hodnotu pole parametrů.
- CS9218: Argumenty typu metody nelze odvodit z použití, protože se používá argument s dynamickým typem a metoda má parametr kolekce parametrů bez pole. Zkuste explicitně zadat argumenty typu.
- CS9223: Vytvoření kolekce parametrů vede k nekonečnému řetězu vyvolání konstruktoru.
- CS9224: Metoda nemůže být méně viditelná než člen s kolekcí parametrů.
- CS9225: Konstruktor ponechá požadovaný člen neinicializovaný.
- CS9227: Typ neobsahuje definici vhodné metody instance
Add. - CS9228: Typ kolekce parametrů bez pole musí mít použitelný konstruktor, který lze volat bez argumentů.
Pravidla deklarace metody
Následující chyby označují použití params modifikátoru u parametru, pokud params modifikátor není v tomto kontextu povolený:
- CS0231: Parametr parametru musí být posledním parametrem v seznamu formálních parametrů.
- CS1104: Pole parametrů nelze použít s
thismodifikátorem v metodě rozšíření. - CS1611: Parametr parametrů nelze deklarovat jako in
refneboout - CS1670:
paramsV tomto kontextu není platný - CS1751: Nelze zadat výchozí hodnotu pole parametrů.
Kompilátor vynucuje následující pravidla pro použití modifikátoru params u parametru metody:
paramsModifikátor je povolen pouze u posledního parametru v seznamu formálních parametrů. To zahrnuje všechny parametry s výchozí hodnotou.- Při použití modifikátoru nelze pro parametr
paramszahrnout výchozí argument. paramsModifikátor nelze použít u parametru odkazu. Referenční parametr je jeden s modifikátoremin,ref readonlyrefnebooutmodifikátorem.paramsModifikátor nelze kombinovat s modifikátoremthisv metodě rozšíření.paramsModifikátor nelze použít u přetíženého operátoru.
Ve verzích starších než C# 12 params nelze modifikátor použít u parametru anonymní metody nebo výrazu lambda.
Pravidla typu parametru a argumentu
Následující chyby značí, že typ parametru, se params kterým se používá, je neplatný:
- CS9218: Argumenty typu metody nelze odvodit z použití, protože se používá argument s dynamickým typem a metoda má parametr kolekce parametrů bez pole. Zkuste explicitně zadat argumenty typu.
- CS0225: Parametr parametru musí být jednorozměrné pole nebo musí mít platný typ kolekce.
- CS9227: Typ neobsahuje definici vhodné metody instance
Add. - CS9228: Typ kolekce parametrů bez pole musí mít použitelný konstruktor, který lze volat bez argumentů.
Ve verzích starších než C# 13 params je modifikátor povolený pouze u jednorozměrných polí. Nebyly platné žádné jiné typy.
Počínaje jazykem C# 13 je možné použít libovolný platný typ kolekce. Některá omezení však zůstávají. Typ kolekce musí dodržovat stejná pravidla jako cíl výrazu kolekce.
Jiné chyby parametrů
Následující chyby označují další problémy s použitím modifikátoru params :
- CS0466: Metoda1 by neměla mít parametr params, protože metoda2 nemá
- CS0674: Nepoužívejte
System.ParamArrayAttributeneboSystem.Runtime.CompilerServices.ParamCollectionAttribute.paramsMísto toho použijte klíčové slovo. - CS0758: Obě deklarace částečné metody musí používat
paramsparametr nebo ani jeden parametrparams - CS9223: Vytvoření kolekce parametrů vede k nekonečnému řetězu vyvolání konstruktoru.
- CS9224: Metoda nemůže být méně viditelná než člen s kolekcí parametrů.
- CS9225: Konstruktor ponechá požadovaný člen neinicializovaný.
Metoda, která implementuje rozhraní, musí obsahovat params modifikátor, pokud a pouze pokud člen rozhraní má params modifikátor. Podobně obě deklarace partial metody musí obsahovat params modifikátor, nebo žádný nemůže obsahovat params modifikátor.
Musíte použít params modifikátor. Nemůžete použít ekvivalentní atributy ani System.ParamArrayAttribute System.Runtime.CompilerServices.ParamCollectionAttribute.
Kompilátor vygeneruje jednu z posledních tří chyb v předchozím seznamu, když je kód vygenerovaný pro vytvoření typu kolekce neplatný:
- Kompilátor generuje CS9223, když kód vygenerovaný k vytvoření kolekce obsahuje také kolekci parametrů stejného typu.
AddMetoda obvykle přebíráparamskolekci stejného typu. - Kompilátor generuje CS9224 , pokud
Createmetoda pro typ kolekce je méně přístupná než metoda, která přebíráparamsparametr typu kolekce. - Kompilátor generuje CS9225 , pokud má typ kolekce požadovaný člen a konstruktor bez parametrů inicializuje tento člen a má System.Diagnostics.CodeAnalysis.SetsRequiredMembersAttribute v konstruktoru bez parametrů.